gpt4 book ai didi

mysql - SQL 计数(*)问题与涉及外部连接的 mysql 中的多个表连接

转载 作者:行者123 更新时间:2023-11-29 05:56:05 25 4
gpt4 key购买 nike

我有三个表,假设 t1、t2、t3 的列为

 t1.c1, t1.c2, t1.c3 
t2.c4, t2.c1, t2.c5
t3.c6, t3.c4

t1.c1、t2.c4 和 t3.c6 是它们各自表的主要自动增量字段。

t2.c1是t2中的外键,引用t1中的t1.c1

t3.c4是t3中的外键,引用t2中的t2.c4

我想为 t2.c5 的任何给定值(比如 X)获得以下输出

抱歉 - 输出列有误!

我希望输出是

t2.c4, t1.c2, count

而不是

t2.c1, t1.c2, count

其中,对于给定的 t2.c5 值,count 是 t3 中的记录数,如果在 t2.c5=X 和 t3.c4=t2.c4 处不存在记录,则计数必须为零

这可以在一个选择查询中完成吗?

这是示例数据:

表:t1

  +------+-------+------+
| c1 | c2 | c3 |
+------+-------+------+
| 1 | 11111 | 111 |
| 2 | 22222 | 222 |
| 3 | 33333 | 333 |
+------+-------+------+

表:t2

  +------+------+------+
| c4 | c1 | c5 |
+------+------+------+
| 1 | 1 | 11 |
| 2 | 1 | 11 |
| 3 | 2 | 11 |
| 4 | 2 | 12 |
| 5 | 3 | 12 |
| 6 | 2 | 12 |
+------+------+------+

表:t3

  +------+------+
| c6 | c4 |
+------+------+
| 1 | 1 |
| 2 | 1 |
| 3 | 5 |
+------+------+

对于t2.c5=11,输出为

    +-------------------+
t2.c4 | t1.c2| Count
+-------------------+
1 | 11111| 2
2 | 11111| 0
3 | 22222| 0
+-------------------+

对于t2.c5=12,输出为

    +-------------------+
t2.c4 | t1.c2| Count
+-------------------+
4 | 22222| 0
5 | 33333| 1
6 | 22222| 0

最佳答案

试试这个查询:

SELECT t2.c4, t1.c2, COUNT(t3.c6) 
FROM t1
INNER JOIN t2 ON t1.c1 = t2.c1
LEFT JOIN t3 ON t3.c4 = t2.c4
WHERE t2.c5 = '11'
GROUP BY t2.c4, t1.c2

输出:

c4  c2  count
-------------
1 11111 2
2 11111 0
3 22222 0

Demo here

使用此查询:

SELECT t2.c4, t1.c2, COUNT(t3.c6) as count
FROM t1
INNER JOIN t2 ON t1.c1 = t2.c1
LEFT JOIN t3 ON t3.c4 = t2.c4
WHERE t2.c5 = '12'
GROUP BY t2.c4, t1.c2

输出是:

c4  c2      count
-----------------
4 22222 0
5 33333 1
6 22222 0

Demo here

关于mysql - SQL 计数(*)问题与涉及外部连接的 mysql 中的多个表连接,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49239937/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com