您好,我目前有 3 个表,如下所示。表之间没有公共键
表1->linkage_Table
ID Item Material Color
1 keypouch * yellow
2 wallet plastic *
3 card-holder leather gold
表 2->Material_Table
ID Name
1 plastic
2 wool
3 leather
表 3->Color_Table
ID Color
1 Yellow
2 green
3 orange
我希望得到以下结果集
Item Material Color
keypouch plastic yellow
keypouch wool yellow
keypouch leather yellow
wallet plastic yellow
wallet plastic green
wallet plastic orange
card-holder leather gold
我想编写一条 SQL 语句将表连接在一起。
在链接表中包含 * 意味着我们将从材质或颜色表中检索所有值。
我现在确实需要这个解决方案。已经尝试解决这个问题超过5个小时了。预先感谢您的任何帮助。
一种可能的方法:
SELECT l.Item, m.name, c.Color
FROM linkage_Table AS l
INNER JOIN Material_Table AS m
ON l.Material = '*'
OR l.Material = m.name
INNER JOIN Color_Table AS c
ON l.Color = '*'
OR l.Color = c.Color
SQL小提琴 http://sqlfiddle.com/#!2/67c33/1
说明:必须构建查询,以便“材料”和“颜色”表完全连接(交叉连接),当'*'
在相应的字段中给出,或者通过这些字段的相等性给出。这正是我们通过使用得到的'ON l.someField = '*' OR l.someField = joined.someField'
clause.
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)