|
| Дата |
|
USD/RUB | 88.6852 | BTC/USD | 67794.8860 |
|
|
|
Скрипты, программы и технические решения Обсуждаем скрипты, программы и новые технологии. |
26.01.2013, 14:57
|
#1
|
hustle
Регистрация: 02.05.2008
Адрес: 3d world
Сообщений: 12,890
Бабло: $1717315
|
Mysql помощь
Нужно выбрать коменты по ID и ответы на них (PID) и отсортировать по дате добавления главного сообщения.
Есть таблица.
Цитата:
id | message | pid | date
|
Но еще есть LIMIT 20 OFFSET 100 (постраничный вывод коментов).
Короче должно быть так:
1. Главное сообщение (дата 01.2013)
- комент (дата 12.2012)
- комент (дата 10.2012)
- комент (дата 05.2012)
- ...
2. Главное сообщение (дата 12.2012)
- комент (дата 01.2013)
- комент (дата 11.2012)
Ну и так далее. В таблице они идут все под своим id. Обратите внимание на даты. Выборка идет с LIMIT и OFFSET.
Пример коментов вот тут http://www.drive2.ru/users/mersbrabus/blog/246513/#post
Только мне нужно в обратном порядке (новые сверху).
Последний раз редактировалось Hector; 26.01.2013 в 15:04.
|
|
|
26.01.2013, 15:27
|
#2
|
$
Регистрация: 05.04.2007
Сообщений: 575
Бабло: $101390
|
[del]можно делать запрос 20-ти Главных сообщений.
потом 20 запросов для комментов
одна страница 21 запрос
одним запросом хз можно это сделать или нет. и что по нагрузке будет жестче тож не ясно
если база не большая - то буде норм.
[/del]
протупил.
это в 2 запроса можно сделать
первый - выборка 20-ти Главных сообщений.
второй - выборка коментариев с нужными pid
Последний раз редактировалось Nikola_N; 26.01.2013 в 15:33.
|
|
|
26.01.2013, 15:32
|
#3
|
Je suis moine ivre
Регистрация: 03.03.2009
Сообщений: 15,268
Бабло: $797172957
|
не нужно 21 запрос, нужно 2. Сначала берем родительские каменты, потом select * from comments where PID in (id1, id2, id3, ...) И уже в пыхе в нужную структуру сложить.
|
|
|
26.01.2013, 15:34
|
#4
|
hustle
Регистрация: 02.05.2008
Адрес: 3d world
Сообщений: 12,890
Бабло: $1717315
ТС -->
|
ТС
|
|
|
26.01.2013, 15:40
|
#5
|
Ебланнед
Регистрация: 08.01.2013
Сообщений: 53
Бабло: $35450
|
дату в unixtime переводи
select id,pid order by date desc limit 20 offset 100;
desc или без desc смотри сам, в какую сторону тебе сортировать
|
|
|
26.01.2013, 15:47
|
#6
|
кодер
Регистрация: 21.01.2008
Сообщений: 315
Бабло: $69585
|
NULL лучше не использовать для PID.
1. получаем комменты
SELECT * FROM `test` WHERE `pid` =0 ORDER BY `date` DESC LIMIT 10
2. получаем комменты к комментам.
SELECT * FROM `test` WHERE `pid` IN (1,2,3,4,5) ORDER BY `date` DESC LIMIT 10
3. в пхп соединяем все и выводим.
Запросы, навернека, планируется кэшировать, поэтому лучше 2 запроса, чем 1 сложный.
__________________
php скрипты от $25 Отзывы: 2013-2011, 2010, 2009. acя: 384 846 ноль два шесть
|
|
|
26.01.2013, 15:58
|
#7
|
hustle
Регистрация: 02.05.2008
Адрес: 3d world
Сообщений: 12,890
Бабло: $1717315
ТС -->
|
ТС
Цитата:
Сообщение от ulitka
дату в unixtime переводи
select id,pid order by date desc limit 20 offset 100;
desc или без desc смотри сам, в какую сторону тебе сортировать
|
Это вообще мимо. Мне дерево нужно построить.
Цитата:
Сообщение от oso
NULL лучше не использовать для PID.
1. получаем комменты
SELECT * FROM `test` WHERE `pid` =0 ORDER BY `date` DESC LIMIT 10
2. получаем комменты к комментам.
SELECT * FROM `test` WHERE `pid` IN (1,2,3,4,5) ORDER BY `date` DESC LIMIT 10
3. в пхп соединяем все и выводим.
Запросы, навернека, планируется кэшировать, поэтому лучше 2 запроса, чем 1 сложный.
|
Не понятно WHERE `pid` IN (1,2,3,4,5) .
в 1м запросе будет массив на вывод. Что это за 1 2 3 4 5?
|
|
|
26.01.2013, 16:14
|
#8
|
hustle
Регистрация: 02.05.2008
Адрес: 3d world
Сообщений: 12,890
Бабло: $1717315
ТС -->
|
ТС
Бля а задачка то сложнее.
Оказывается еще есть вот что
1. Главное сообщение (дата 01.2013)
- комент (дата 12.2012)
- комент (дата 10.2012)
- комент (дата 05.2012)
___- комент (дата 05.2012)
_____- комент (дата 05.2012)
2. Главное сообщение (дата 12.2012)
- комент (дата 01.2013)
__- комент (дата 10.2012)
- комент (дата 11.2012)
Короче есть ответы, и ответы на эти ответы...... пиздец)
|
|
|
26.01.2013, 16:19
|
#9
|
Ебланнед
Регистрация: 08.01.2013
Сообщений: 53
Бабло: $35450
|
Цитата:
Сообщение от Hector
Это вообще мимо. Мне дерево нужно построить.
|
а, у тебя там ещё и на каждый каммент подкаммент, я не заметил
архитектуру базы надо продумывать правильно
основные камменты имеют уникальную цифру с шагом ну, скажем, 1000 (1000 подкамментов ведь не будет? если будет, то 10000)
дальше объяснять?
|
|
|
26.01.2013, 17:19
|
#10
|
Senior Member
Регистрация: 24.04.2007
Адрес: Красноярск
Сообщений: 358
Бабло: $50640
|
для хранения и управления деревьями люди придумали MPTT
__________________
PharmCash - Лучшие условия и профит в фарме. Hold-0, Refunds-0, Commission–50%, CPU+500. Google нас любит!
|
|
|
|