【发布时间】:2015-08-12 20:53:30
【问题描述】:
这是我的数据库相关部分的布局:
(顺便说一句,我用wwwsqldesigner制作了这张图)
现在,我想查询与 A 的特定行匹配的 C 的所有行。
我自己提出的查询有效。例如,在 C 中查找与 A 的第 123 行匹配的行:
SELECT C.* FROM C
LEFT JOIN B1 ON (B1.id = C.id_B1)
LEFT JOIN B2 ON (B2.id = C.id_B2)
WHERE B1.id_A = 123 OR B2.id_A = 123
但是,我认为上面的查询效率相当低,因为它会在一个大集合中收集 B1 和 B2 的所有行,然后再将其减少,对吧?
我相信我应该能够首先对 B1 和 B2 分别进行查询,选择它们的 id_A 值,然后以某种方式将这些结果连接到匹配的 C 行中。
我查看了sqlite.org's docs 的 SELECT 命令,但可能性让我不知所措。
如何解决这个问题?稍微解释一下解决这个问题的思考过程将不胜感激。
(另外,如果您可以为这个问题建议一个更好的标题 - 我真的不知道如何确定这一点)
【问题讨论】: