#sql #join #count #subquery
#sql #Присоединиться #количество #подзапрос
Вопрос:
Я написал запрос для получения данных из разных таблиц, всего мне нужно получить 3 столбца данных из 3 таблиц на основе Id, и в одном из этих столбцов я должен получить количество строк таблицы
SELECT vm.Vendor_Name, vc.Contact_Name, COUNT(po.Purchase_order)
FROM vendor_master vm JOIN
purchase_order po
ON po.vendor_id = vm.vendor_id JOIN
vendor_contacts vc
ON vc.Vend_id = vm.vendor_id JOIN
payment_master pm
ON pm.Vendor_id = vm.vendor_id
WHERE vm.vendor_id = 1;
Я написал приведенный выше запрос для этого, но он выдает некоторую ошибку
Ответ №1:
когда вы будете использовать агрегатную функцию с некоторым выбором столбца, вам нужно сгруппировать по этим столбцам
SELECT vm.Vendor_Name, vc.Contact_Name, COUNT(po.Purchase_order)
FROM vendor_master vm JOIN
purchase_order po
ON po.vendor_id = vm.vendor_id JOIN
vendor_contacts vc
ON vc.Vend_id = vm.vendor_id JOIN
payment_master pm
ON pm.Vendor_id = vm.vendor_id
WHERE vm.vendor_id = 1
group by vm.Vendor_Name, vc.Contact_Name
итак, вам не хватает group by в вашем запросе
Ответ №2:
Похоже, вам нужен GROUP BY
:
SELECT vm.Vendor_Name, vc.Contact_Name, COUNT(po.Purchase_order)
FROM vendor_master vm JOIN
purchase_order po
ON po.vendor_id = vm.vendor_id JOIN
vendor_contacts vc
ON vc.Vend_id = vm.vendor_id JOIN
payment_master pm
ON pm.Vendor_id = vm.vendor_id
WHERE vm.vendor_id = 1
GROUP BY vm.Vendor_Name, vc.Contact_Name;