Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/73.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
每个单独的id';使用join查询在两个表中的mysql中的s计数_Mysql_Sql_Select_Join - Fatal编程技术网

每个单独的id';使用join查询在两个表中的mysql中的s计数

每个单独的id';使用join查询在两个表中的mysql中的s计数,mysql,sql,select,join,Mysql,Sql,Select,Join,我有两张桌子 表1 id team_id fav_id 1 10 1 2 10 6 3 11 5 4 12 5 5 12 1 6 25 6 表2 league_id team_id name 100 10 a 100 11 b 100 12 c 100

我有两张桌子

表1

id  team_id  fav_id
1    10        1
2    10        6
3    11        5
4    12        5
5    12        1
6    25        6
表2

league_id   team_id   name
100          10        a 
100          11        b
100          12        c
100          13        d
101          25        e
我需要一个查询中
表2
联盟id=100的所有
团队id
的结果,以及
表1
中每个
团队id
fav\u id
计数
加入
的结果

期望的结果是

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

有什么想法吗?

因为您想在列表中列出所有的
团队id
,但没有fav\u id,所以您需要使用
左连接来连接这两个表。使用
LEFT JOIN
的原因是,无论它在右侧表中是否有匹配项,它都会返回联接左侧表定义的所有行

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
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    ║
╚═══════════╩═════════╩══════════╩══════╝

由于要在列表中列出所有没有fav_id的
团队id
,因此需要使用
左连接来连接这两个表。使用
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    ║
╚═══════════╩═════════╩══════════╩══════╝
我想那会管用的

这是一把小提琴

我想那会管用的

这是一把小提琴



关于如何一起连接到MySQL表,这里已经有数百个问题(包括答案)。您的问题与前面的问题有什么不同?在您的示例结果中,同一个联盟如何获得不同的名称?这里已经有数百个关于如何一起连接到MySQL表的问题(带答案)。你的问题与之前的问题有什么不同?在你的示例结果中,你是如何得到同一联赛的不同名称的?谢谢你的工作。伟大的出于好奇,这里使用的子查询的性能与使用联接相比如何?查询解析器是否会生成相同的查询执行计划?@Paccc我将尝试运行此查询的
EXPLAIN
,并与John Wooes的答案进行比较。稍后我会告诉你的。谢谢你的工作。伟大的出于好奇,这里使用的子查询的性能与使用联接相比如何?查询解析器是否会生成相同的查询执行计划?@Paccc我将尝试运行此查询的
EXPLAIN
,并与John Wooes的答案进行比较。谢谢你的努力不客气,你需要更多的解释吗?不,谢谢!明白我的问题了。很高兴听到这个消息。谢谢你的努力。不客气。你需要更多的解释吗?不,谢谢!明白我的问题了。很高兴听到
:D