我需要编写一个查询,该查询应该根据其他表从表中提取数据,我的列名也将依赖于其他表
假设我有表A和B:
// Table A
Type_id D1 D2 D3
1 1 2 3
2 12 11 14
3 23 24 15
// Table B
Type_id DC1 DC2
1 D2 D3
2 D1 D3
3 D3 D1
查询应该是这样的:
select if(type_id=1 then D2,D3) if(type(type_2 then D1,D3) from A where type_id in (select type_id from B) order by if(type_id=1 then D2,D3) if(type(type_2 then D1,D3)
。
我无法修复type_id = 1,type_id = 2选择列名称或按顺序修复因为table有很多type_id并且会增长。
结果应该是:
type_id,columns with respect to (DC1,DC2)
1,2,3
2,12,14
3,15,23
答案 0 :(得分:2)
好像你想要一个连接和一个case语句(或两个):
SELECT
A.Type_id,
CASE
WHEN B.DC1 = 'D1' THEN A.D1
WHEN B.DC1 = 'D2' THEN A.D2
WHEN B.DC1 = 'D3' THEN A.D3
ELSE 'You got problems'
END AS DC1,
CASE
WHEN B.DC2 = 'D1' THEN A.D1
WHEN B.DC2 = 'D2' THEN A.D2
WHEN B.DC2 = 'D3' THEN A.D3
ELSE 'You got problems'
END AS DC2
FROM TABLE_A A
JOIN TABLE_B B ON A.Type_id = B.Type_id