Есть запрос такого типа
$result="select n.date,n.text,count(c.id_statia) as count_n,count(p.id_statia) as count_p from novosty n
left join comments c on n.id=c.id_statia
left join prosmotr p on n.id=p.id_statia
where url='".$name."'";
Проблема заключается в том что при left join comments и left join prosmotr не правильно подсчитывает count(c.id_statia) as count_n,count(p.id_statia) as count_p.
Если использовать один из left join то все работает, подскажите как подправить код
Спустя 30 минут, 50 секунд (14.06.2012 - 14:54) vagrand написал(а):
Добавь
group by n.id
Спустя 7 минут, 11 секунд (14.06.2012 - 15:01) Markus111 написал(а):
Ничего не изменилось.
должно быть в count_n 5, count_p 4
а выводит в count_n 20, count_p 20
должно быть в count_n 5, count_p 4
а выводит в count_n 20, count_p 20
Спустя 12 минут, 16 секунд (14.06.2012 - 15:13) Markus111 написал(а):
Зашел на страничку где count_n равен 0, а novosty n уже есть значение то здесь все работает, а там где count_n имеет значение выдает что count_n , count_p одинаковые например 5, а это не так
Спустя 26 минут, 23 секунды (14.06.2012 - 15:40) vital написал(а):
мм. Distinct ?
Спустя 11 минут, 50 секунд (14.06.2012 - 15:52) Markus111 написал(а):
Distinct не помог.
Спустя 13 минут, 53 секунды (14.06.2012 - 16:06) Placido написал(а):
Попробуйте так
SELECT
`n`.`date`,
`n`.`text`,
COALESCE(`c`.`count_n`, 0) AS `count_n`,
COALESCE(`p`.`count_p`, 0) AS `count_p`
FROM `novosty` `n`
LEFT JOIN
(SELECT `id_statia`, COUNT(`id_statia`) AS `count_n` FROM `comments` GROUP BY `id_statia`) `c` ON `n`.`id` = `c`.`id_statia`
LEFT JOIN
(SELECT `id_statia`, COUNT(`id_statia`) AS `count_p` FROM `prosmotr` GROUP BY `id_statia`) `p` ON `n`.`id` = `p`.`id_statia`
WHERE `url` = '".$name."';
Спустя 2 часа, 31 минута, 31 секунда (14.06.2012 - 18:37) Markus111 написал(а):
Спасибо Placido, этот способ прекрасно работает
_____________
Womans in your town