2014-03-03 49 views
-3

我在MySQL數據庫中有三個表:語言查找表,動物查找表和第三個表,描述每種語言中每個動物的稱謂。如果沒有匹配的記錄,則選擇NULL作爲JOIN中的值

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欄爲空:

language_name | language_animal_code | animal_code 
-------------------------------------------------- 
English  | cat     | Felis catus 
French  | chat     | Felis catus 
English  | dog     | NULL

這似乎是它應該是一個普遍的問題,但我不能想出在搜索查詢表上的連接表時搜索術語時適用的任何內容。

回答

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

SELECT * FROM POPULATED_TABLE RIGHT OUTER JOIN SPARSELY_POPULATED_TABLE USING (JOIN_COLUMN)

相關問題