Различные вопросы по PHP и MySQL

245K
.
Screamer, Немного не то, нужно из первой таблице вывести всё, а в другой просто посчитать колличество, относительно первой.
А в этом примере, как я понимаю выводится всё и новость, и комментарии к ней
.
SlyDeath
SELECT n.*, COUNT(c.*) as count_comments FROM `news` AS n 
INNER JOIN `comm` AS c ON `n`.`id` = `c`.`id_news`
ORDER BY `n`.`id` DESC 
LIMIT ".$start.", ".$on_page."

Нинаю так не, голые запросы не привык писать. Вообще плохо вслепую писать, люблю насиловать mysql по полной. =)
.
SlyDeath (18.02.2013 / 20:26)
SELECT n.*, COUNT(c.*) as count_comments FROM `news` AS n 
INNER JOIN `comm` AS c ON `n`.`id` = `c`.`id_news`
ORDER BY `n`.`id` DESC 
LIMIT ".$start.", ".$on_page."

Нинаю так не, го
Голые запросы - это что такое?
.
dont,
SELECT `n`.*, COUNT(DISTINCT `n`.`id`) AS `count`
FROM `news` AS `n`
    INNER JOIN `comm` AS `c`
        ON `n`.`id` = `c`.`id_news`
.
L!MP (18.02.2013 / 20:32)
dont,
SELECT `n`.*, COUNT(DISTINCT `n`.`id`) AS `count`
FROM `news` AS `n`
    INNER JOIN `comm` AS `c`
        ON `n`.`id` = `c`.`id_news`
Тут колличество чего считается? Нужно ведь колличество комментариев к новости считать
.
dont, Это вот такие как выше. Я обычно фреймворками пользуюсь, там Query Builder'еры. Как пример из Коханы
DB::select()->from('table')
    ->and_having_open()
    ->and_having('category', '=', 1)->or_having('brand', '=', 4)
    ->and_having_close()
    ->and_having('disabled', '=', 1);

Писать проще, о синтаксисе не паришься. Голый пишу обычно если запрос сложный, 2-4 джоина с вложенными селектами/апдейтами. Там никакой query builder не справится. =)
.
SlyDeath, Мне бы хоть на процедурном научиться :-)
Можно было обычный запрос сделать, а потом в цикле еще один, на подсчет колличества комментариев из другой таблице. Но это как-то не рационально получится. К примеру десять новостей на странице - это будет еще десять запросов, чтоб посчитать число комментариев к каждой новости. Ненадо насиловать базу
.
dont, Вряд ли у вас тысячи посетителей и не надо боятся нагрузки. =) Мне такие таблички в руки я бы собрал запрос, а так непонятно чего делать то.
.
(\/)____o_O____(\/)
dont, можно проще, сейчас не за компом, выбирать нужно коммы и джоинить новости. я бы так сделал, там и количество и имя и прочее, и по страницам разбить можно
.
Попробуй так
SELECT n.*, COUNT(c.id_news) AS comment_count FROM news AS n 
LEFT JOIN comments AS c ON c.id_news = n.id
GROUP BY `n`.`id`
ORDER BY `n`.`id` DESC
LIMIT 20
Всего: 7969