我有两张桌子,
TABLE_1
id team_id fav_id
1 10 1
2 10 6
3 11 5
4 12 5
5 12 1
6 25 6
TABLE_2
league_id team_id name
100 10 a
100 11 b
100 12 c
100 13 d
101 25 e
我需要team_id
的所有league_id = 100
和table_2
join
以及count
fav_id
team_id
的结果table_1
在league_id team_id name count of(fav_id)
-------------------------------------------------
100 10 a 2
100 11 b 1
100 12 c 2
100 13 d 0
中的单个查询中。
期待结果,
{{1}}
有什么想法吗?
答案 0 :(得分:1)
SELECT
table_2.league_id,
table_2.team_id,
table_2.name,
(SELECT COUNT(*) FROM table_1 WHERE table_1.team_id=table_2.team_id)
FROM
table_2
WHERE
table_2.league_id=100
答案 1 :(得分:1)
由于您要列出没有 fav_id 的列表中的所有team_id
,您需要使用LEFT JOIN
加入两个表。使用LEFT JOIN
的原因是因为它返回表中在连接的左侧上定义的所有行,无论它在右表上是匹配还是什么都没有。
SELECT a.league_ID, a.team_ID,
COUNT(b.team_ID) totalFAV,
a.Name
FROM table2 a
LEFT JOIN table1 b
ON a.team_ID = b.team_ID
WHERE a.league_ID = 100
GROUP BY a.league_ID, a.team_ID, a.Name
要进一步了解联接,请访问以下链接:
输出
╔═══════════╦═════════╦══════════╦══════╗
║ LEAGUE_ID ║ TEAM_ID ║ TOTALFAV ║ NAME ║
╠═══════════╬═════════╬══════════╬══════╣
║ 100 ║ 10 ║ 2 ║ a ║
║ 100 ║ 11 ║ 1 ║ b ║
║ 100 ║ 12 ║ 2 ║ c ║
║ 100 ║ 13 ║ 0 ║ d ║
╚═══════════╩═════════╩══════════╩══════╝
答案 2 :(得分:1)
SELECT a.`league_id`, a.`team_id`, a.`name`, COUNT(b.id)
FROM table_2 a
LEFT JOIN table_1 b
ON a.team_id = b.team_id
WHERE a.league_id = 100
GROUP BY a.team_id
我认为这有用。
这是一个小提琴