0

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

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

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

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

categories (id, cat_id) 为words -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 子句应该是什么样的?

4

1 回答 1

1

怎么样

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

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

于 2013-09-07T10:20:59.643 回答