此查询将提供所需的结果。它加入了
user
UNION
的
business_list
classified_list
表,并使用条件聚合对与每个用户关联的业务和分类的数量求和:
SELECT u.user_name AS `User Name`,
u.user_email AS `User Email`,
u.user_phone AS `User Phone`,
SUM(CASE WHEN bc.type = 'business' THEN 1 ELSE 0 END) AS `No Of Business`,
SUM(CASE WHEN bc.type = 'classified' THEN 1 ELSE 0 END) AS `No Of Classified`
FROM user u
JOIN (SELECT 'business' AS type, user_id
FROM business_list
UNION ALL
SELECT 'classified' AS type, user_id
FROM classified_list) bc
ON bc.user_id = u.user_id
GROUP BY u.user_id;
或者,您可以使用
LEFT JOIN
每一张桌子,
COUNT
惯性导航与制导
DISTINCT
SELECT u.user_name AS `User Name`,
u.user_email AS `User Email`,
u.user_phone AS `User Phone`,
COUNT(DISTINCT b.bid) AS `No Of Business`,
COUNT(DISTINCT c.cid) AS `No Of Classified`
FROM user u
LEFT JOIN business_list b ON b.user_id = u.user_id
LEFT JOIN classified_list c ON c.user_id = u.user_id
GROUP BY u.user_id
两个查询的输出相同:
User Name User Email User Phone No Of Business No Of Classified
Jose jose@yahoo.in 457855654 2 1
Tom tom@yahoo.in 5464644654 0 1
Nick nick@yahoo.in 4545645644 2 1
Rose rose@yahoo.in 554545441 1 2
SQLFiddle Demo