Помогите с запросом (у меня MySQL): Есть 2 таблицы: категории и организации. Структуры: - Категории - id, ... - Организации - id, cat, ... Как выделить категории при этом посчитав, сколько организаций в нее входят? SQL знаю на начальном уровне, поэтому писал так: SELECT cats.id, COUNT(orgs.*) FROM cats, orgs WHERE orgs.cat = cats.id; Но было бы все так просто...
Хорошо, но такой запрос выделяет только те категории у которых есть организации, а как выделить все категории не зависимо есть организации или нет?
незнаю, будет ли работать в MySQL, пробуйте SELECT id, (SELECT COUNT(*) FROM orgs WHERE cat = cats.id) FROM cats
Выделенное, очень не красиво. В Oracle для выше приведенного вопроса есть конструкция: Select * from table1, table2 Where table1.id = table2.id(+) В MsSql аналог Select * from table1, table2 Where table1.id =* table2.id В MySql не так силен, но возможно и в нем есть подобная конструкция. Курим мануал!
Попробуй Код (Text): SELECT a.id, count(a.id) FROM cats AS a LEFT JOIN orgs AS b ON (a.id=b.cat) GROUP BY a.id
поидее не должен...... различия есть..... cats.id = orgs.id и a.id=b.cat (cats.id=orgs.cat) немного различаются.....