Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757
Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770
Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/topic.php on line 737 Форумы портала PHP.SU :: Помощь в составлении запроса
Покинул форум
Сообщений всего: 34
Дата рег-ции: Нояб. 2009
Помог: 0 раз(а)
Viper пишет:
svoloch пишет:
чтобы первыми отображались тексты с новыми комментариями а дальше(в том же цикле) по убыванию по дате?
так они ж в любом случае сортируются по дате!? Или я не понял вашего замысла...
Вообще есть ORDER BY `date_field`DESC
Да, так они сортируются по дате.
НО! Мне необходимо организовать вывод с учетом даты добавления комментария.
Пример
Имеем 3 записи.
1 - дата публикации 05.04.2011, комментариев 3(последний 07.04.2011 в 16:30)
2 - дата публикации 06.04.2011, комментариев 0
3 - дата публикации 07.04.2011, комментариев 1(последний 07.04.2011 в 12:15)
И вывести мне эти записи надо в таком порядке - 1, 3, 2
То есть, при выводе мне надо в первую очередь выводить ту запись, к которой добавили последний комментарий, и так по убыванию.
Мелкий
Отправлено: 07 Апреля, 2011 - 11:41:46
Активный участник
Покинул форум
Сообщений всего: 11926
Дата рег-ции: Июль 2009 Откуда: Россия, Санкт-Петербург
Покинул форум
Сообщений всего: 34
Дата рег-ции: Нояб. 2009
Помог: 0 раз(а)
Мелкий пишет:
SELECT `text`, `data`, `id` AS tid, (SELECT max(`data`) FROM `comments` WHERE `comments`.`text_id`=tid) AS cdate FROM `texts` ORDER BY `cdate` DESC
Так выводит все записи, но данные записей не выводятся. Точнее только текст записи. А надо так же получить id запси, id юзера, добавившего запись. В общем, надо получить все записи из таблицы. (Добавление)
Даю точную структуру таблиц
Покинул форум
Сообщений всего: 11926
Дата рег-ции: Июль 2009 Откуда: Россия, Санкт-Петербург
Помог: 618 раз(а)
До последнего байта под вашу задачу писать запрос не намерен. Недостающие поля можете сами дописать в запрос.
----- PostgreSQL DBA
svoloch
Отправлено: 08 Апреля, 2011 - 21:33:40
Новичок
Покинул форум
Сообщений всего: 34
Дата рег-ции: Нояб. 2009
Помог: 0 раз(а)
Мелкий пишет:
До последнего байта под вашу задачу писать запрос не намерен. Недостающие поля можете сами дописать в запрос.
вписываю. но при добавлении остальных полей вывод вообще прекращается. То есть, выборка не дает ни одного результата.
Lozzie
Отправлено: 08 Апреля, 2011 - 22:55:57
Новичок
Покинул форум
Сообщений всего: 22
Дата рег-ции: Апр. 2011 Откуда: /usr/home/
Помог: 2 раз(а)
Цитата:
но при добавлении остальных полей вывод вообще прекращается.
Вывод не может прекратиться сам по себе. Либо у вас отсутствуют записи, удовлетворяющие условия выборки, либо ошибка в синтаксисе запроса. Почему бы не воспользоваться функцией mysql_error?
svoloch
Отправлено: 09 Апреля, 2011 - 03:04:09
Новичок
Покинул форум
Сообщений всего: 34
Дата рег-ции: Нояб. 2009
SELECT texts.id, texts.text,IF(MAX(comments.date)> 0, MAX(comments.date), texts.date)AS date
FROM texts, comments
WHERE texts.id = comments.tid ORDERBY date ASC
P.S: Пример на статус идеального решения не претендует. Но в пять утра что-то удачнее не придумать.
P.P.S: Так и не понял, зачем поле даты int(11), когда unix-timestamp укладывается в int(10) unsigned. А колонку uid можно убрать, добавив UNIQUE KEY (`id`).
SELECT texts.id, texts.text,IF(MAX(comments.date)> 0, MAX(comments.date), texts.date)AS date
FROM texts, comments
WHERE texts.id = comments.tid ORDERBY date ASC
P.S: Пример на статус идеального решения не претендует. Но в пять утра что-то удачнее не придумать.
P.P.S: Так и не понял, зачем поле даты int(11), когда unix-timestamp укладывается в int(10) unsigned. А колонку uid можно убрать, добавив UNIQUE KEY (`id`).
Не работает((
P.S. Такую структуру таблиц дали
Lozzie
Отправлено: 09 Апреля, 2011 - 05:00:52
Новичок
Покинул форум
Сообщений всего: 22
Дата рег-ции: Апр. 2011 Откуда: /usr/home/
Помог: 2 раз(а)
А с чего он должен работать? Это только пример. Я лишь хотел вам продемонстрировать реализацию с оператором IF(вместо подзапроса). А так, если к запросу добавить группировку и корректные условия выборки, то он сможет справиться с вашей задачей.
Все гости форума могут просматривать этот раздел. Только зарегистрированные пользователи могут создавать новые темы в этом разделе. Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.