复杂(或非常非常简单)的MySQL查询?
我正在制作一个处理项目对话翻译的数据库。复杂(或非常非常简单)的MySQL查询?
我有一个项目表,对话表和翻译表。
每个表中的每个条目都有一个id列。
-
对话有
projectID
列,指示项目的对话的一部分。 -
翻译有一个
dialogueID
列,指示正在翻译的对话条目。
因此,为了帮助解释这个问题,这里是一个伪查询我已经构造:
SELECT *
FROM translation
WHERE (translation.dialogueID refers to dialogue where dialogue.projectID = X)
基本上,我希望获取项目十,所有的翻译项目由于有一个从项目没有直接的途径 - >翻译,我必须通过项目 - >对话,然后对话 - >翻译。在此期间,我选择在翻译表中添加一个projectID
,但它有点笨拙。
如果你知道ID是项目(X)的东西,那么你可以使用:
SELECT t.* FROM translation AS t, dialogue AS d
WHERE t.dialogueID = d.id AND d.projectID = X
如果你不知道这个项目ID,但你知道它的名字(X)或东西,你可以参考它,你可以使用:
SELECT t.* FROM translation AS t, dialogue AS d, project AS p
WHERE t.dialogueID = d.id AND d.projectID = p.id AND p.name='X'
我明白了。所以它实际上是通过第一个查询中的翻译和对话行的每个唯一配对来迭代的?这很疯狂。我不知道你可以做这样的事情。非常感谢您的快速响应。完美的作品。 – milkmanjack
很高兴我能帮到你。如果你还没有加快选择过程,如果你迭代堆行,我会建议索引你的id列。这里有一个很好的讨论http://stackoverflow.com/questions/5696897/what-are-the-biggest-benefits-of-using-indexes-in-mysql – mongjong
我会推荐使用JOIN。它已经存在了20年,所以让我们开始使用它! – Strawberry
你问关于使用两个JOIN? –
没有线索。我从来没有使用JOIN指令。 – milkmanjack