Есть таблица Names Names id name 1 name1 2 name2 3 name3 Есть таблица Relations (таблица связей names с post) Relations id_names post 1 2 1 3 3 7 Нужно выбрать для каждого id таблицы Names количество использований в таблице Relations Что-то типа select distinct id, [количество упоминаний этого id в relations ] from names
[sql]SELECT DISTINCT(`names`.`id`), COUNT(`post`.`id`) FROM `names` JOIN `relations` ON `names`.`id` = `relations`.`id_names` JOIN `post` ON `post`.`id` = `relations`.`post` GROUP BY `names`.`id`;[/sql] Вроде так, но нужно тестировать...
SELECT Names.*, COUNT (Relations.post) AS posts FROM Names LEFT JOIN Relations ON Names.id = Relations.id_names GROUP BY Names.id Попробуй так.
пробую так [sql]select @alter:=id,select count(alternative) from localhost_relations where alternative=@alter group by alternative from localhost_alternatives group by id[/sql] но не проходит
вот так вот работает [sql]SELECT localhost_alternatives.id, count(localhost_relations.alternative) AS alter_count FROM localhost_alternatives LEFT JOIN localhost_relations ON localhost_alternatives.id = localhost_relations.alternative GROUP BY localhost_alternatives.id[/sql]
не правильно запостил запрос вот правильно точнее так как я пробовал [sql] select @alter:=id, (select count(alternative) from localhost_relations where alternative=@alter group by alternative) from localhost_alternatives group by id[/sql]
суть в джоине и в группировке Mr. T по сути написал то же самое, только 1) Соединять сюда posts не нужно, нам ведь сами посты не нужны, только количество 2) дистинкт не нужен, так как есть group by И еще - мой запрос выберет даже тех Names, у которых ни одного поста. Если такие не нужны - используй INNER JOIN вместо LEFT
тогда почему групировка по localhost_alternatives.id если count по localhost_relations.alternative ? [sql] SELECT localhost_alternatives.id, count(localhost_relations.alternative) AS alter_count FROM localhost_alternatives LEFT JOIN localhost_relations ON localhost_alternatives.id = localhost_relations.alternative GROUP BY localhost_alternatives.id[/sql]
правильно ли я понимаю, что после джойна мы получили новую виртуальную таблицу с полями обеих физических таблиц и именно это дало возможность мускулу коунтом подбить количество?