我有一个类似于字典的数据库。基本上,有六个表:
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子句应该是什么样的?
答案 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个表上创建连接,而不是使用子查询。