Спустя 7 минут, 25 секунд (8.12.2011 - 12:45) fire написал(а):
Привести те даты что будешь сравнивать в один тип, например timestamp а потом уже делать с ними что нужно. Тут на форуме уже обсуждалось вроде.
Спустя 4 минуты, 19 секунд (8.12.2011 - 12:49) ИНСИ написал(а):
Ramzil_Nixon может ты имел в виду узнать разницу в датах?
Спустя 3 минуты, 50 секунд (8.12.2011 - 12:53) Winston написал(а):
Нужно уточнять, какие даты ты сравниваешь? Покажи, что нужно сравнить ?
Спустя 3 минуты, 11 секунд (8.12.2011 - 12:56) Ramzil_Nixon написал(а):
постараюсь объяснять что я хочу сделать:
например есть форум. там темы надо отсортировать по дате. ну вроде как разобрался, но появилась такая проблема. (сортирую по дате комментариев). если создаю новую тему, тема без комментариев остается внизу, а хочу даже если без комментариев появилась наверху. то есть темы спуститься по дате комментариев. темы и комментарии находятся оба на отдельных таблицах.
например есть форум. там темы надо отсортировать по дате. ну вроде как разобрался, но появилась такая проблема. (сортирую по дате комментариев). если создаю новую тему, тема без комментариев остается внизу, а хочу даже если без комментариев появилась наверху. то есть темы спуститься по дате комментариев. темы и комментарии находятся оба на отдельных таблицах.
Спустя 1 минута, 26 секунд (8.12.2011 - 12:58) Ramzil_Nixon написал(а):
Winston
Пока не могу код выложить, с телефона лежу.
Пока не могу код выложить, с телефона лежу.
Спустя 2 часа, 45 минут, 13 секунд (8.12.2011 - 15:43) bodja написал(а):
Цитата |
а хочу даже если без комментариев появилась наверху |
А чем отличается пост ТС от других ?
Спустя 32 минуты, 50 секунд (8.12.2011 - 16:16) Ramzil_Nixon написал(а):
bodja
Не совсем понял
Не совсем понял
Спустя 6 минут, 27 секунд (8.12.2011 - 16:22) Placido написал(а):
Если таблицы те же, что и в предыдущем вопросе, то вот вариант решения:
SELECT
`topik_forum`.*,
CASE
WHEN `comment_topik`.`data` IS NULL THEN `topik_forum`.`data`
ELSE MAX(`comment_topik`.`data`)
END AS `finaldata`
FROM
`topik_forum`
LEFT JOIN
`comment_topik` ON `topik_forum`.`id` = `comment_topik`.`id_topik`
GROUP BY `topik_forum`.`id`
ORDER BY `finaldata` DESC;
Спустя 41 минута, 10 секунд (8.12.2011 - 17:03) Ramzil_Nixon написал(а):
Вот у меня такой запрос:
$query_topiks = mysql_query("SELECT * FROM `topik_forum`
LEFT JOIN `comment_topik` ON
`comment_topik`.`id_topik` = `topik_forum`.`id_topik_kategory` WHERE
`id_for` = '".$fors['id_for_kat']."'
GROUP BY `id_topik_kategory`
ORDER BY `comment_topik`.`data` DESC
") or die(mysql_error()); // Запрашиваем нужные темы
Спустя 2 часа, 15 минут, 3 секунды (8.12.2011 - 19:18) Ramzil_Nixon написал(а):
Placido, а не сложно каждую строку комментарий написать? А то я тут не понимаю, что к чему
Спустя 29 минут, 29 секунд (8.12.2011 - 19:48) Placido написал(а):
В целом я уже объяснял вот здесь. Новое -
CASE- если в поле `comment_topik`.`data` пусто (т.е. комменты отсутствуют), то в поле `finaldata` вставляется дата создания топика (`topik_forum`.`data`), если комменты есть (в поле `comment_topik`.`data` не NULL), то вставляется время последнего обновления комментария к этой теме (MAX(`comment_topik`.`data`) + группировка по `topik_forum`.`id` (GROUP BY `topik_forum`.`id`)). Потом полученная таблица сортируется по "комбинированному" полю `finaldata`.
WHEN `comment_topik`.`data` IS NULL THEN `topik_forum`.`data`
ELSE MAX(`comment_topik`.`data`)
END AS `finaldata`
Спустя 6 минут, 40 секунд (8.12.2011 - 19:54) Ramzil_Nixon написал(а):
Placido, про GROUP я понял, а для чего MAX() ?
Спустя 13 минут, 21 секунда (8.12.2011 - 20:08) Placido написал(а):
Цитата (Ramzil_Nixon @ 8.12.2011 - 18:54) |
Placido, про GROUP я понял, а для чего MAX() ? |
Ты выбираешь максимальное значение (читай - самую позднюю дату) из поля `comment_topik`.`data` (MAX(`comment_topik`.`data`)), для каждого значения в поле `topik_forum`.`id` (GROUP BY `topik_forum`.`id`).
Спустя 2 минуты, 59 секунд (8.12.2011 - 20:11) Ramzil_Nixon написал(а):
Placido, то есть MAX выбирает максимальную дату?
Спустя 5 минут, 8 секунд (8.12.2011 - 20:16) cripten написал(а):
для вывода даты в нормальном формате используй это http://php.su/functions/?date
Спустя 50 секунд (8.12.2011 - 20:17) Placido написал(а):
Цитата (Ramzil_Nixon @ 8.12.2011 - 19:11) |
Placido, то есть MAX выбирает максимальную дату? |
Здесь - да.
Спустя 53 секунды (8.12.2011 - 20:18) Ramzil_Nixon написал(а):
Цитата (cripten @ 8.12.2011 - 17:16) |
для вывода даты в нормальном формате используй это http://php.su/functions/?date |
А что так нельзя?
DATE_FORMAT(`data`, '".$data_format."')
Спустя 59 секунд (8.12.2011 - 20:19) Ramzil_Nixon написал(а):
Цитата (Placido @ 8.12.2011 - 17:17) |
Здесь - да. |
Ясно, ну я попробую
Спустя 36 минут, 6 секунд (8.12.2011 - 20:55) Ramzil_Nixon написал(а):
Появилась такая ошибка:
Цитата |
You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'CASE WHEN `comment_topik`.`data` IS NULL THEN `topik_forum`.`data` ELSE' at line 2 |
Спустя 4 минуты, 36 секунд (8.12.2011 - 20:59) Winston написал(а):
Спустя 47 секунд (8.12.2011 - 21:00) Placido написал(а):
Покажи сам запрос.
Спустя 45 секунд (8.12.2011 - 21:01) Ramzil_Nixon написал(а):
Winston
Цитата (Winston @ 8.12.2011 - 17:59) |
Переводчик надо ? |
Да нет
Просто думать что то последние пару часов лень вот и спрашиваю
Спустя 37 секунд (8.12.2011 - 21:01) Ramzil_Nixon написал(а):
Цитата (Placido @ 8.12.2011 - 18:00) |
Покажи сам запрос. |
$query_topiks = mysql_query("SELECT * FROM `topik_forum`
CASE WHEN `comment_topik`.`data` IS NULL THEN `topik_forum`.`data`
ELSE MAX(`comment_topik`.`data`)
END AS `finaldata`
LEFT JOIN `comment_topik` ON
`comment_topik`.`id_topik` = `topik_forum`.`id_topik_kategory` WHERE
`id_for` = '".$fors['id_for_kat']."'
GROUP BY `id_topik_kategory`
ORDER BY `finaldata` DESC
") or die(mysql_error()); // Запрашиваем нужные темы
Спустя 1 минута, 29 секунд (8.12.2011 - 21:03) Winston написал(а):
Цитата (Ramzil_Nixon @ 8.12.2011 - 20:01) |
Просто думать что то последние пару часов лень |
Афигеть не встать! Может пора отдохнуть ?
Спустя 50 секунд (8.12.2011 - 21:04) Ramzil_Nixon написал(а):
Цитата (Winston @ 8.12.2011 - 18:03) |
Афигеть не встать! Может пора отдохнуть ? |
Ну надо бы, но пока не убью эту ошибку, не лягу
Спустя 1 минута, 50 секунд (8.12.2011 - 21:06) Placido написал(а):
SELECT *, CASE WHEN `comment_topik`.`data` IS NULL THEN `topik_forum`.`data` ELSE MAX(`comment_topik`.`data`) END AS `finaldata` FROM...
Спустя 2 минуты, 36 секунд (8.12.2011 - 21:08) Ramzil_Nixon написал(а):
Placido,
Ошибка не исчезла:
$query_topiks = mysql_query("SELECT *, CASE WHEN `comment_topik`.`data` IS NULL THEN `topik_forum`.`data` ELSE MAX(`comment_topik`.`data`) END AS `finaldata` FROM `topik_forum`
`comment_topik`.`id_topik` = `topik_forum`.`id_topik_kategory` WHERE
`id_for` = '".$fors['id_for_kat']."'
GROUP BY `id_topik_kategory`
ORDER BY `finaldata` DESC
") or die(mysql_error()); // Запрашиваем нужные темы
Ошибка не исчезла:
Цитата |
You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '.`id_topik` = `topik_forum`.`id_topik_kategory` WHERE `id_for` = '1' ' at line 2 |
Спустя 7 минут, 22 секунды (8.12.2011 - 21:16) Placido написал(а):
А куда LEFT JOIN делся?
Спустя 1 минута, 26 секунд (8.12.2011 - 21:17) Placido написал(а):
Тебе всего-то было надо после * поставить запятую и поменять местами FROM `topik_forum` и часть с CASE.
Спустя 24 секунды (8.12.2011 - 21:17) Ramzil_Nixon написал(а):
Placido, тьфу балин! Голова не работает вообще, ладно придется завтра соображать. Метод тыка не помогает
_____________
Миллионы приходят, уходят, не в них счастье. Самым важным на свете всегда будут люди в этой комнате, вот здесь, сейчас...