как получить количество отдельных столбцов при получении данных из разных таблиц на основе Id

#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;