这是我第一个sql查询分配中的最后一个任务,我发现它比其他任务要困难得多。我有三张table:
细菌(bid,name)-包含细菌的id和名称
抗生素(aid,name)-包含抗生素的id和名称
效果(aid,bid)-包含影响细菌的抗生素id(使用的细菌id)
这项任务要求给受相同抗生素影响的两对细菌(如果一种抗生素影响细菌a,它也应该影响细菌b,反之亦然)。
我就是这么想的:
SELECT b1.*,b2.*
FROM Bacteria b1, Bacteria b2
WHERE b1.bid, b2.bid IN (SELECT e1.bid, e2.bid
FROM Effect e1, Effect e2
WHERE e1.aid = e2.aid)
我知道语法是错误的,甚至可能是我的方法。
对我来说,完成这项任务的最佳方法是什么?
谢谢您
2条答案
按热度按时间bogh5gae1#
这里需要一个关系除法查询。
对于以下数据
提取所需信息的一种方法是
它回来了
显示具有ids 1和ids 2的细菌都受到同一组抗生素的影响(20和21)
演示
yvt65v4c2#
这其实很简单。它是一个自连接。
不过,首先,我要告诫你在这个词中使用逗号
FROM
条款。如果你在学习sql,你应该正确地学习它,并学会使用适当的、明确的、标准的JOIN
语法。所以,我们的想法是:
这将返回细菌ID。我会让你努力弄清楚真实的名字。