我有两张桌子:
表1
Name | AMOUNT | TYPE
John | 20 | TH
Jill | 10 | IU
Bill | 30 | IK
John | 45 | AL
表2
TYPE | DESC
88 | RENT
34 | ALIMONY
87 | TAX
56 | BEER
我必须加入这些表格。我知道表1中的TYPE 'TH'
对应于表2中的“88”。
同样,IK对应于87,依此类推。但是没有任何参考表可以用来加入这些参考表。有没有解决方法呢?
答案 0 :(得分:0)
如果这些是表格中包含的唯一数据,您可以创建一个新表格table3
:
TYPE 1| TYPE2
88 | TH
34 | IU
87 | IK
56 | AL
尝试:
select Name,Amount,Type.table1,Type,table2 from table1 inner join table3
on table1.Type=table3.Type2
inner join
table2 on table2.type=tabl3.type1
答案 1 :(得分:0)
您没有提及DBMS,但您应该能够使用派生表,如:
select ...
from t1
join ( values ('TH',88),('IK',87) ) as a (x,y)
on t1.type = a.x
join t2
on a.y = t2.type
您可能需要执行以下操作:
join ( select ('TH',88) union all select ('IK',87) ) as a (x,y)
代替。但是,如果这种关系存在,为什么不为它创建一个表并插入信息呢?
答案 2 :(得分:0)
好的,这是一个相当奇怪的问题,因为它违反了关系数据库的规则。但你可以像这样解决它:
inner join Table2 on Table2.Type = 88 and Table1.Type = 'TH'
这可以为每个组合做。但我建议最好添加一个新列,并引用该类型的id。
答案 3 :(得分:0)
如果有一个很好的理由不创建第三个表,你可以这样写:
SELECT
........
FROM
table1 a
JOIN table2 b
ON
(
CASE
WHEN a.type='TH'
THEN 88
WHEN a.type='IK'
THEN 87
...........
END
)
=b.type