У меня есть схема базы данных как -
create table Manufacturer (mid integer primary key, name varchar(20), address varchar(56));
create table Supplies(sid integer references Supplier(sid), pid integer references Product(pid));
У меня есть проблема, которая заявляет-
Перечислите идентификаторы и названия производителей и количество продуктов, произведенных каждым
Итак, я попробовал GROUP BY с JOIN, но не удается, когда я пытаюсь показать mid,name,count(pid)
вместе, показывая not a GROUP BY expression error
.
Но я успешно выполнил следующее ->
select name,count(m2.pid) from Manufacturer m1 inner join Manufactures m2 on m1.mid=m2.mid group by name;
, который дает мне названия и соответствующее количество продуктов успешно.
Но когда я пытаюсь добавить средний столбец, чтобы показать mid
вместе с другими двумя - name
и count(pid)
, это показывает ошибку -
select m1.mid,name,count(m2.pid) from Manufacturer m1 inner join Manufactures m2 on m1.mid=m2.mid group by name;
Простое добавление m1.mid
приводит к ошибке!
Это также выдает ошибку, когда я пытаюсь GROUP BY mid
- критерии присоединения!
select m1.mid,name,count(m2.pid) from Manufacturer m1 inner join Manufactures m2 on m1.mid=m2.mid group by m1.mid;
Это потому, что mid
является критерием объединения для двух таблиц? И поэтому я не могу использовать это в разделе GROUP BY?
Я не уверен, что это за ошибка или какая концепция мне не хватает!
Заранее спасибо за помощь.