我有两个表,itemrequest_table
和item_table
。四列itemrequest_table
(item1, item2, item3, item4
)与item_no
的{{1}}相关联。
我试图编写一个查询来显示item1,item2,item3,item4列下item_nos的项目名称。
但是如何显示项目名称呢?是否可以查询?
我的桌子:
答案 0 :(得分:0)
您只需要在两个表之间进行四个连接 - 每个项目一个:
SELECT
Item1 = i1.item_name,
Item2 = i2.item_name,
Item3 = i3.item_name,
Item4 = i4.item_name
FROM
itemrequest_table ir
INNER JOIN
item_table i1 ON ir.item1 = i1.item_no
INNER JOIN
item_table i2 ON ir.item2 = i2.item_no
INNER JOI
item_table i3 ON ir.item3 = i3.item_no
INNER JOIN
item_table i4 ON ir.item4 = i4.item_no
但这确实是一个糟糕的设计 - 它闻起来是第一次正常形式违规(重复列)。您真正应该做的只是itemrequest_table
和item_table
之间的关系,如果需要,允许任意数量的连接(常规的,正常的m:n关系)
答案 1 :(得分:0)
您需要执行四个连接:
SELECT ir.request_no,
t1.item_name, t2.item_name, t3.item_name, t4.item_name
FROM itemrequest_table ir
LEFT JOIN item_table t1 ON ir.item1 = t1.item_no
LEFT JOIN item_table t2 ON ir.item2 = t2.item_no
LEFT JOIN item_table t3 ON ir.item3 = t3.item_no
LEFT JOIN item_table t4 ON ir.item4 = t4.item_no
编辑:
根据评论,这些项目是可选的,因此应使用left join
代替join
。