MySQL查询 - 多个JOIN

时间:2013-09-07 10:09:10

标签: mysql join

我有一个类似于字典的数据库。基本上,有六个表:

words_a (id_a,word_a)包含语言A的所有单词

words_b (id_b,word_b)包含语言B的所有单词

单词(id,id_a,id_b)将语言A的单词及其对应的翻译与语言B连接

类别(id,cat_id)为 -table

中的每个worda-wordb-relationship分配类别

现在我想做的是获取特定类别的所有翻译。

我选择一个类别ID(cat_id)并获取该类别中的所有单词 - 单词 - 关系(id),然后我得到这两个关系的两个相应的单词ID(id_a和id_b):

    SELECT id_a, id_b
    FROM words, (
        SELECT *
        FROM `categories`
        WHERE cat_id =6
    ) AS temp
    WHERE words.id = temp.id

这给了我一张表格,其中包含语言A中所有单词的ID以及类别6中语言B的相应翻译的ID。现在我需要ID的实际单词。

SELECT word_a, word_b FROM words_a,words_b, (
    SELECT id_a,id_b 
    FROM words, (
        SELECT * 
        FROM categories 
        WHERE cat_id=6 ) AS t 
    WHERE words.id = t.id ) AS temp 
WHERE ??? )

我的where子句应该是什么样的?

1 个答案:

答案 0 :(得分:1)

怎么样

  

SELECT word_a,word_b FROM words_a,words_b,word,categories WHERE   words.id = categories.id和word_a.id_a = words.id_a和word_b.id_b   = words.id_b AND categories.cat_id = 6

这将在所有4个表上创建连接,而不是使用子查询。