SELECT `data`.`id`, `data`.`title`, `data`.`date_now`, `menu`.`menu_name` FROM `data`. На его основе составил еще один запросик, который выводик кол-во комментариев к статье. Вот собственно и он
LEFT JOIN `menu` ON `menu`.`id` = `data`.`id_menu`
ORDER BY `data`.`date_now` DESC
$res = mysql_query("SELECT `you_mail`.`id`, `you_mail`.`title`, `you_mail`.`date_now`, `you_mail`.`text`, `you_mail`.`time`, `you_mail`.`view`, `comment`.`id_mail` "Работает нормально, но только мне необходирмо подсчитать кол-во комментариев к статье(id)(таблица - you_mail) - а комментарии к статьям(id_mail)(таблица - comment). Знаю что есть такая штука как COUNT. Только куда ее - то написать надо что бы сработало - не вкурсе. Так что кто может, прошу о помощи. Спасибо!
. "FROM `you_mail` "
. "LEFT JOIN `comment` ON `you_mail`.`id` = `comment`.`id_mail` "
. "WHERE `you_mail`.`hide`='show' ORDER BY `you_mail`.`date` DESC");
Спустя 47 минут, 25 секунд (23.12.2010 - 00:24) Invis1ble написал(а):
Во-первых, когда ты уже научишься оформлять код читабельно? Сравни оформление запроса, который тебе дал linker и свой запрос...
Что за ужас - все в одну строку?
Что за ужас - все в одну строку?
Спустя 4 минуты, 7 секунд (23.12.2010 - 00:28) inpost написал(а):
http://inpost.dp.ua/lessons/lessons.php?id=5 - правило№6, смотри.
Спустя 16 секунд (23.12.2010 - 00:28) m4a1fox написал(а):
да извините... не думал совсем про это.
"SELECT `you_mail`.`id`, `you_mail`.`title`,
`you_mail`.`date_now`, `you_mail`.`text`, `you_mail`.`time`, `you_mail`.`view`, `comment`.`id_mail` FROM `you_mail`
LEFT JOIN `comment` ON `you_mail`.`id` = `comment`.`id_mail`
WHERE `you_mail`.`hide`='show'
ORDER BY `you_mail`.`date` DESC";
Спустя 7 минут, 35 секунд (23.12.2010 - 00:36) m4a1fox написал(а):
inpost
Хм....да я вроде переменные не использую)
Хм....да я вроде переменные не использую)
Спустя 22 минуты, 2 секунды (23.12.2010 - 00:58) inpost написал(а):
m4a1fox
Я имел ввиду правило№5 =) Там про стиль =)
Я имел ввиду правило№5 =) Там про стиль =)
Спустя 1 минута, 13 секунд (23.12.2010 - 00:59) m4a1fox написал(а):
inpost
а.... ясно спасибо... я уже в избранное добавил)
а.... ясно спасибо... я уже в избранное добавил)
Спустя 8 часов, 28 минут, 4 секунды (23.12.2010 - 09:27) linker написал(а):
COUNT() добавляется в SELECT
Спустя 28 минут, 37 секунд (23.12.2010 - 09:56) elliot написал(а):
В компании, где я работаю, мы решили придерживаться нескольких простых правил по оформлению SQL запросов, которые значительно повышают читаемость этих самых запросов:
Пример форматирования:
В отформатированном таким образом запросе куда проще выделить логические блоки:
Запрос небольшой, при больших запросах очень легко запутаться во вложенности, такой подход позволяет этого избежать.
Также запросы, занимающие несколько строк лучше выносить в отдельную переменную, а не лепить непосредственно в параметры функции:
Такой подход также упрощает чтение и понимание чужого (да и своего через несколько месяцев) кода.
Надеюсь эта информация кому-то окажется полезной ;)
- Ключевые слова MySQL пишутся в верхнем регистре (SELECT, FROM и т.д.).
- Существуют базовые блоки, такие как SELECT, FROM, WHERE, GROUP BY, ORDER BY и другие. Если базовый блок имеет вложенные блоки, то они оформляются с новой строки с использование табуляции.
- Пользуемся сокращениями (alias) для таблиц.
Пример форматирования:
SELECT
column1,
column2,
.......
FROM table1 AS t1
JOIN table2 AS t2 ON t1.id = t2.key
JOIN table3 AS t3 ON t1.id = t3.key
...................................
WHERE t1.column2 IS NOT NULL
AND t1.column1 = 'something'
GROUP BY t1.column2
ORDER BY t1.column2
В отформатированном таким образом запросе куда проще выделить логические блоки:
SELECT
COUNT(*),
ym.id,
ym.title,
ym.date_now,
ym.text,
ym.time,
ym.view,
c.id_mail
FROM you_mail AS ym
LEFT JOIN comment AS c ON ym.id = c.id_mail
WHERE ym.hide = 'show'
ORDER BY ym.date DESC
Запрос небольшой, при больших запросах очень легко запутаться во вложенности, такой подход позволяет этого избежать.
Также запросы, занимающие несколько строк лучше выносить в отдельную переменную, а не лепить непосредственно в параметры функции:
$query = "
SELECT ...
WHERE ....
....
";
$res = mysql_query($query);
Такой подход также упрощает чтение и понимание чужого (да и своего через несколько месяцев) кода.
Надеюсь эта информация кому-то окажется полезной ;)