|
|
|
| Допустим есть таблица-справочник отделов (родительская)
CREATE TABLE 'otdel'
(
'otdelid' int(11) unsigned NOT NULL auto_increment,
'otdelname' char(20) default NULL,
PRIMARY KEY ('otdelid')
) ENGINE=MyISAM DEFAULT CHARSET=cp1251;
|
и подчиненная (дочерняя) таблица-справочник товаров
CREATE TABLE 'tovar'
(
'tovarid' int(11) unsigned NOT NULL auto_increment,
'otdel' int(11) unsigned default '0',
'tovarname' char(20) default NULL,
PRIMARY KEY ('tovarid'),
KEY 'otdel' ('otdel')
) ENGINE=MyISAM DEFAULT CHARSET=cp1251;
|
И я хочу получить список отделов с количеством товаров, в них.
Ну например в отделе "Тапки" 2 товара - "комнатные" и "уличные", а в "Сапоги" один товар "Кирзачи".
Тогда список должен получиться таким
Тапки 2
Сапоги 1
Сейчас делаю это таким запросом
SELECT otdel.*, (SELECT count(*) as count1 FROM tovar WHERE tovar.otdel=otdel.otdelid) AS tov_count FROM otdel
|
Можно ли как-то обойтись без вложенного запроса? А то у меня почему-то не получается :( | |
|
|
|
|
|
|
|
для: targa
(04.05.2006 в 18:48)
| |
SELECT otdelname, count(tovarid) AS tovcount
FROM otdel JOIN tovar ON otdel.otdelid = tovar.otdel
GROUP BY otdelid
|
| |
|
|
|
|
|
|
|
для: Trianon
(04.05.2006 в 18:55)
| | Trianon. сенкс. Видно что-то с памятью моей стало. Ведь писал же раньше такое (правда не к мускулу). | |
|
|
|