SQL-запрос с 2 подсчетами и 2 левыми внешними соединениями

#sql #select #count #left-join

#sql #выберите #подсчет #левое соединение

Вопрос:

Я пытаюсь показать все столбцы из моей таблицы t1_elem и объединить 2 столбца, в которых я использую COUNT.

Я использовал запрос:

 SELECT p.*,COUNT(t4_id) as ile_publikacji, COUNT(t7_id) as ile_fitow 
FROM t1_elem p
LEFT OUTER JOIN t4_autorzy ON p.t1_id=t4_autorzy.t4_t1_id
LEFT JOIN t7_pliki ON p.t1_id=t7_pliki.t7_t1_id
GROUP BY t1_id
  

Но результаты плохие. Что я делаю не так?

Комментарии:

1. «Но результаты плохие» Что плохого в результате??? Как кто-нибудь может вам с этим помочь?

Ответ №1:

Вероятно, у вас есть несколько совпадений. Как указано, два подсчета будут одинаковыми. Вероятно, самым простым решением является использование distinct :

 SELECT p.*, COUNT(DISTINCT t4_id) as ile_publikacji, COUNT(DISTINCT t7_id) as ile_fitow 
FROM t1_elem p LEFT JOIn
     t4_autorzy
     ON p.t1_id = t4_autorzy.t4_t1_id LEFT JOIN
     t7_pliki
     ON p.t1_id=t7_pliki.t7_t1_id
GROUP BY t1_id
  

Комментарии:

1. Спасибо! Это решило мою проблему. Я прочитаю о distinct функции 🙂