我有几张桌子。
table_0
id | id_table_1 |id_table_2 | people_id
1 1 0 1
2 0 2 1
3 0 0 1
4 0 1 2
TABLE_1
id | machine| type
1 bmw 1
2 reno 1
....
TABLE_2
id | machine |type
1 yamaha 2
2 ducati 3
....
table_3(类型)
id | name
1 auto
2 bike
3 sportbike
....
我想制作可以获得此结果的选择查询
tabel_0.id | table_0.people_id | machine(table_1 or table_2) | type
1 1 bmw auto
2 1 ducati sportbike
3 1 "" ""
上次我问过这个问题,但没有行类型,现在我有了这段代码
SELECT table_0.id, table_0.people_id,
IFNULL(table_1.machine, table_2.machine) AS machine
FROM table_0
LEFT JOIN table_1 ON table_0.id_table_1 = table_1.id
LEFT JOIN table_2 ON table_0.id_table_2 = table_2.id
WHERE table_0.people_id = 1
请帮助修复我的查询。谢谢!
答案 0 :(得分:1)
您可以让联接为table_1
或table_2
select t0.id
, t0.people_id
, coalesce(t1.machine, t2.machine) as machine
, t3.name as type
from table_0 t0
left join
table_1 t1
on t0.id_table_1 = t1.id
left join
table_2 t2
on t0.id_table_2 = t2.id
left join
table_3 t3
on t3.id in (t1.type, t2.type)
您可以通过提供表格实名而不是table_1
和table_2
来改进您的设计。
答案 1 :(得分:0)
试试这个:
SELECT table_0.id, table_0.people_id, table_1.machine, table_2.machine , table_3.type
FROM table_0
JOIN table_1 ON table_0.id_table_1 = table_1.id
JOIN table_2 ON table_0.id_table_2 = table_2.id
JOIN table_3 ON table_2.type = table_3.id
WHERE table_0.people_id = 1