2013-09-05 43 views
0

我有這兩個表:MySQL的 - 如何加入表兩次同桌

主營:

id | name | hair_color | eye_color 
1 | a | 1   | 2 
2 | b | 1   | 3 
3 | c | 4   | 3 

項目:

id | name 
1 | black 
2 | blue 
3 | green 
4 | blonde 

我要選擇從一排主表,但用它們的物品名稱替換hair_color和eye_color ID。

我的意思是,在主表中的行數1,我想這方面的細節:

$res = array(
      id=>1, 
      name=>'a', 
      hair_color=>'black', 
      eye_color=>'blue'); 

我想這不正確MySQL查詢:

SELECT `main`.`id`, `main`.`name`, `items`.`name` as `hair_color`, `items`.`name` as `eye_color` 
FROM `main` 
LEFT JOIN `items` ON `main`.`hair_color` = `items`.`id 
LEFT JOIN `items` ON `main`.`eye_color` = `items`.`id 
WHERE `main`.`id` = 1 

我知道,這個查詢是不正確,但我不知道如何做到這一點。

有什麼想法?

感謝

編輯:

謝謝大家!

+0

看起來還好吧,只是給表的別名(名稱):'LEFT JOIN項目IT1 ON main.color = it1.color'與同爲第二一個,但稱它爲2或什麼 – Nanne

+0

你可以發佈架構? –

回答

0

你接近,但你需要的別名。

喜歡的東西

SELECT `main`.`id`, 
     `main`.`name`, 
     h.`name` as `hair_color`, 
     e.`name` as `eye_color` 
FROM `main` 
LEFT JOIN `items` h ON `main`.`hair_color` = h.id 
LEFT JOIN `items` e ON `main`.`eye_color` = e.id 
WHERE `main`.`id` = 1 

SQL Fiddle DEMO

+0

Hooo ...謝謝! – Nir

0

你只需要爲它取別名到您的items表:

SELECT `main`.`id`, `main`.`name`, 
     hi.`name` as `hair_color`, ei.`name` as `eye_color` 
FROM `main` 
LEFT JOIN `items` hi ON `main`.`hair_color` = hi.`id` 
LEFT JOIN `items` ei ON `main`.`eye_color` = ei.`id` 
+0

Hooo ...謝謝! – Nir