Форум успешных вебмастеров - GoFuckBiz.com

  Форум успешных вебмастеров - GoFuckBiz.com > Бизнес-решения > Скрипты, программы и технические решения
Дата
USD/RUB58.7930
BTC/USD0.0000
Скрипты, программы и технические решения Обсуждаем скрипты, программы и новые технологии.

Закрытая тема
Опции темы Опции просмотра
Старый 26.01.2013, 14:57   #1
Hector
Статус кво
 
Аватар для Hector
 
Регистрация: 02.05.2008
Адрес: California
Сообщений: 11,256
Бабло: $1447910
Отправить сообщение для Hector с помощью ICQ
По умолчанию 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.
Hector вне форума  
Старый 26.01.2013, 15:27   #2
Nikola_N
$
 
Регистрация: 05.04.2007
Сообщений: 564
Бабло: $86815
По умолчанию

[del]можно делать запрос 20-ти Главных сообщений.
потом 20 запросов для комментов

одна страница 21 запрос

одним запросом хз можно это сделать или нет. и что по нагрузке будет жестче тож не ясно

если база не большая - то буде норм.
[/del]
протупил.
это в 2 запроса можно сделать
первый - выборка 20-ти Главных сообщений.
второй - выборка коментариев с нужными pid

Последний раз редактировалось Nikola_N; 26.01.2013 в 15:33.
Nikola_N вне форума  
Старый 26.01.2013, 15:32   #3
Drunk Monk
Je suis moine ivre
 
Аватар для Drunk Monk
 
Регистрация: 03.03.2009
Сообщений: 15,235
Бабло: $797160062
По умолчанию

не нужно 21 запрос, нужно 2. Сначала берем родительские каменты, потом select * from comments where PID in (id1, id2, id3, ...) И уже в пыхе в нужную структуру сложить.
__________________
EssayPartner.com. Партнерка по эссе трафу.
Drunk Monk вне форума  
Старый 26.01.2013, 15:34   #4
Hector
Статус кво
 
Аватар для Hector
 
Регистрация: 02.05.2008
Адрес: California
Сообщений: 11,256
Бабло: $1447910
ТС -->
Отправить сообщение для Hector с помощью ICQ
автор темы ТС По умолчанию

я думаю тут можно одним запросом обойтись
я жетско гуглил но не работает нихера что нашел

вот например http://stackoverflow.com/questions/1...rent-and-child
http://stackoverflow.com/questions/4...r-of-parent-id
Hector вне форума  
Старый 26.01.2013, 15:40   #5
ulitka
Ебланнед
 
Регистрация: 08.01.2013
Сообщений: 53
Бабло: $35450
По умолчанию

дату в unixtime переводи
select id,pid order by date desc limit 20 offset 100;
desc или без desc смотри сам, в какую сторону тебе сортировать
ulitka вне форума  
Старый 26.01.2013, 15:47   #6
oso
кодер
 
Аватар для oso
 
Регистрация: 21.01.2008
Сообщений: 316
Бабло: $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 ноль два шесть
oso вне форума  
Старый 26.01.2013, 15:58   #7
Hector
Статус кво
 
Аватар для Hector
 
Регистрация: 02.05.2008
Адрес: California
Сообщений: 11,256
Бабло: $1447910
ТС -->
Отправить сообщение для Hector с помощью ICQ
автор темы ТС По умолчанию

Цитата:
Сообщение от 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?
Hector вне форума  
Старый 26.01.2013, 16:14   #8
Hector
Статус кво
 
Аватар для Hector
 
Регистрация: 02.05.2008
Адрес: California
Сообщений: 11,256
Бабло: $1447910
ТС -->
Отправить сообщение для Hector с помощью ICQ
автор темы ТС По умолчанию

Бля а задачка то сложнее.
Оказывается еще есть вот что


1. Главное сообщение (дата 01.2013)
- комент (дата 12.2012)
- комент (дата 10.2012)
- комент (дата 05.2012)
___- комент (дата 05.2012)
_____- комент (дата 05.2012)

2. Главное сообщение (дата 12.2012)
- комент (дата 01.2013)
__- комент (дата 10.2012)

- комент (дата 11.2012)

Короче есть ответы, и ответы на эти ответы...... пиздец)
Hector вне форума  
Старый 26.01.2013, 16:19   #9
ulitka
Ебланнед
 
Регистрация: 08.01.2013
Сообщений: 53
Бабло: $35450
По умолчанию

Цитата:
Сообщение от Hector Посмотреть сообщение
Это вообще мимо. Мне дерево нужно построить.
а, у тебя там ещё и на каждый каммент подкаммент, я не заметил
архитектуру базы надо продумывать правильно
основные камменты имеют уникальную цифру с шагом ну, скажем, 1000 (1000 подкамментов ведь не будет? если будет, то 10000)
дальше объяснять?
ulitka вне форума  
Старый 26.01.2013, 17:19   #10
flo0
Senior Member
 
Аватар для flo0
 
Регистрация: 24.04.2007
Адрес: Красноярск
Сообщений: 352
Бабло: $48800
По умолчанию

для хранения и управления деревьями люди придумали MPTT
__________________
PharmCash - Лучшие условия и профит в фарме. Hold-0, Refunds-0, Commission–50%, CPU+500. Google нас любит!
flo0 вне форума  
Закрытая тема



Опции темы
Опции просмотра