SQL join two simple query with count and groupby

谁说胖子不能爱 提交于 2019-12-24 13:39:26

问题


hello i have 2 queries and i wanna join together but i don't know how...

SELECT *, count(*) as invii 
FROM professionisti JOIN preventivi_invii ON 
 professionisti.email=preventivi_invii.email 
GROUP BY professionisti.email 
HAVING invii> 300


SELECT *, count(*) as acquisti 
FROM professionisti JOIN contatti_acquistati ON   
 professionisti.email=contatti_acquistati.email 
GROUP BY professionisti.email 
HAVING acquisti> 5

the problem for me is multiple count and the group by with same column. thank u


回答1:


How about the below query. You would just change the WHERE clause to meet your needs.

SQL Fiddle Example:

SELECT * FROM 
(
  SELECT p.email, 
    CASE WHEN ISNULL(m1.invii) THEN 0 ELSE m1.invii END AS invii,
    CASE WHEN ISNULL(m2.acquisti) THEN 0 ELSE m2.acquisti END AS acquisti
  FROM professionisti p
  LEFT JOIN 
  (
    SELECT pp.email, COUNT(*) AS invii 
    FROM preventivi_invii pp
    GROUP BY pp.email 
  ) AS m1 ON p.email = m1.email
  LEFT JOIN
  (
    SELECT c.email, COUNT(*) AS acquisti
    FROM contatti_acquistati c
    GROUP BY c.email 
  ) AS m2 ON p.email = m2.email
) AS mm
WHERE mm.invii = 0 
OR mm.acquisti = 0;

Or you could use:

SELECT * FROM
(
  SELECT p.email, 
  (
    SELECT 
    CASE WHEN ISNULL(COUNT(*)) THEN 0 ELSE COUNT(*) END
    FROM preventivi_invii pp
    WHERE pp.email = p.email
  ) AS invii,
  (
    SELECT
    CASE WHEN ISNULL(COUNT(*)) THEN 0 ELSE COUNT(*) END
    FROM contatti_acquistati c
    WHERE c.email = p.email
  ) AS acquisti
  FROM professionisti p
) AS mm
WHERE mm.invii = 0
OR mm.acquisti = 0


来源:https://stackoverflow.com/questions/23914207/sql-join-two-simple-query-with-count-and-groupby

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!