我在MySQL数据库中有三个表:一个用于语言的查找表,一个用于动物的查找表和一个描述每种语言中每个动物被调用的内容的第三个表。
Table: languages language_id language_name Table: animals animal_id animal_code animal_name Table: language_animal_codes language_animal_code_id language_id animal_id language_animal_code
填充语言和language_animal_codes表。我需要为用户创建一个表单来填充动物表。当然,在动态表完全填充之前,一些language_animal_codes.animal_id将为空。
我需要查询包含每种动物在每种语言中调用的内容的记录,如下所示:
SELECT e.language_name,
ecc.language_animal_code
FROM language_animal_codes ecc, languages e
WHERE e.language_id = ecc.language_id
结果集如下所示:
language_name | language_animal_code ------------------------------------ English | cat French | chat English | dog
这让我对自己想要的东西有所了解。如果记录存在,我还需要知道动物表中的animal_code,否则我需要将animal_code列设为null:
language_name | language_animal_code | animal_code -------------------------------------------------- English | cat | Felis catus French | chat | Felis catus English | dog | NULL
这似乎应该是一个常见的问题,但在搜索查找表上的联接联结表等术语时,我无法提出任何适用的内容。
答案 0 :(得分:1)
尝试使用JOINS
。示例查询可以是:
SELECT e.language_name,
ecc.language_animal_code,
a.animal_code
FROM language_animal_codes ecc
INNER JOIN languages e
ON e.language_id = ecc.language_id
LEFT OUTER JOIN animals a
ON ecc.animal_id = a.animal_id
答案 1 :(得分:-1)
SELECT * FROM POPULATED_TABLE RIGHT OUTER JOIN SPARSELY_POPULATED_TABLE USING (JOIN_COLUMN)