我有两张桌子:
主:
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
我想从Main表中选择一行,但是将items_color和eye_color id替换为Items表所适合的名称。
我的意思是,对于主表中的第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 :(得分: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`
答案 1 :(得分: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