这里有 SQL 难题。
以简化形式,我有 3 个表:
测试
tnum name
-------------
1 A
2 B
部分
tnum snum num_of_qs
-------------------------
1 1 6
1 2 7
问题
tnum qnum
-------------
1 1
1 2
每个表的数据显然比这个多。
问题在于,除了 tnum
之外,section
表和 question
表之间没有任何链接。我正在执行此 SQL 调用:
SELECT * FROM test t
LEFT JOIN section s ON s.tnum = t.tnum
LEFT JOIN question q ON q.tnum = t.tnum...
所发生的情况是,每个部分都会发送一套完整的问题。因此,如果有 100 个问题分为 17 个部分,我会得到 1700 个问题。
有没有一种方法可以在一次通话中获得所有问题和所有部分而不重复?
谢谢
最佳答案
您的数据库结构应该是(仅留下必须的字段,不包括名称列等):
问题:
- qnum
- snum
部分
- snum
- tnum
测试
- tnum
(粗体 - 主键)
然后你的查询应该是这样的:
SELECT
q.qnum,
s.snum,
t.tnum
FROM
questions q
LEFT JOIN sections s ON q.snum = s.snum
LEFT JOIN tests t ON s.tnum = t.tnum
关于mysql - SQL 连接难题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16417103/