gpt4 book ai didi

mysql - SQL如何在同一个表上使用多个连接

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

我遇到了一个棘手的问题,无法自己解决。这就是我想要实现的目标。

The desired output

这可能吗?我已经尝试过以下查询,但没有得到我想要的。

SELECT t1.ID, info.start_bt1, info.start_bt2, t1.ANT as BT1_VL1, t2.ANT as BT1_VL2, t3.ANT as BT2_VL1, t4.ANT as BT2_VL2 
FROM antwoorden t1
LEFT JOIN info ON t1.ID = info.ID

LEFT JOIN antwoorden t2
ON t1.ID = t2.ID
AND t2.BT = 1 AND t2.VL = 2

LEFT JOIN antwoorden t3
ON t1.ID = t3.ID
AND t3.BT = 2 AND t3.VL = 1

LEFT JOIN antwoorden t4
ON t1.ID = t4.ID
AND t4.BT = 2 AND t4.VL = 2

WHERE t1.BT = 1 AND t1.VL = 1

问题是我只得到 ID 为 2 的行(来自所需的结果)。有谁知道为什么我只得到 ID 为 2 的行而不是全部 4 个行?

<小时/>

编辑

我更新了图片,这样我的意思就更清楚了。此外,ID 是赋予一个人的 ID。如图所示,这意味着一个人可以拥有多行。我想做的是将一个人收集的所有数据按其 ID 进行分组。我知道这种方式不是存储数据的好方式,但我无法控制,因为这是别人做的,我无法更改它。

<小时/>

另一个编辑:这里是 a sql fiddle

最佳答案

换个角度试试。从 info 表开始,然后多次 LEFT JOINantwoorden:

select i.id,i.start_bt1,i.start_bt2,
a1.ant as "bt1_vl1",
a2.ant as "bt1_vl2",
a3.ant as "bt2_vl1",
a4.ant as "bt2_vl2"
from info i
left join antwoorden a1 on a1.id = i.id and a1.vl=1 and a1.bt=1
left join antwoorden a2 on a2.id = i.id and a2.vl=2 and a2.bt=1
left join antwoorden a3 on a3.id = i.id and a3.vl=1 and a3.bt=2
left join antwoorden a4 on a4.id = i.id and a4.vl=2 and a4.bt=2;

关于mysql - SQL如何在同一个表上使用多个连接,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30896610/

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