SQL Select 在同一行中查找多个外键的文本 table
SQL Select Text for multiple foreign keys to lookup table in same row
我有一个类似于以下内容的 table,它具有项目更改的历史记录并保存状态的旧值和新值。状态编号是保存文本的查找 table 的外键。 IE。 1 = 'In Inventory', 2= 'Destroyed' 等..
我希望能够将其呈现为人类可读的结果,并将整数键替换为查找中的文本 table,但我不太确定该怎么做,因为我不能加入外键。
演示数据库
+---------+-------------+-------------+------------+
| ITEM_ID | OLD_STATUS | NEW_STATUS | TIMESTAMP |
+---------+-------------+-------------+------------+
| 1 | 1 | 2 | 2012-03-25 |
| 1 | 2 | 3 | 2013-12-25 |
| 1 | 3 | 4 | 2015-03-25 |
+---------+-------------+-------------+------------+
您可以多次 join
status
table - 像这样:
select i.item_id,
i.old_status,
i.new_status,
i.timestamp,
s1.statustext,
s2.statustext
from items i
join status s1 on i.old_status = s1.statusid
join status s2 on i.new_status = s2.statusid
我有一个类似于以下内容的 table,它具有项目更改的历史记录并保存状态的旧值和新值。状态编号是保存文本的查找 table 的外键。 IE。 1 = 'In Inventory', 2= 'Destroyed' 等..
我希望能够将其呈现为人类可读的结果,并将整数键替换为查找中的文本 table,但我不太确定该怎么做,因为我不能加入外键。
演示数据库
+---------+-------------+-------------+------------+
| ITEM_ID | OLD_STATUS | NEW_STATUS | TIMESTAMP |
+---------+-------------+-------------+------------+
| 1 | 1 | 2 | 2012-03-25 |
| 1 | 2 | 3 | 2013-12-25 |
| 1 | 3 | 4 | 2015-03-25 |
+---------+-------------+-------------+------------+
您可以多次 join
status
table - 像这样:
select i.item_id,
i.old_status,
i.new_status,
i.timestamp,
s1.statustext,
s2.statustext
from items i
join status s1 on i.old_status = s1.statusid
join status s2 on i.new_status = s2.statusid