我不确定如何命名标题,所以提前抱歉。
无论如何,我有以下SQL SELECT查询(Oracle)来搜索特定的请求状态:
SELECT ib.incident_id,
ib.incident_status_id
FROM cs_incidents_all_b ib, cs_incidents_all_tl it
WHERE ib.incident_id = it.incident_id
AND ib.incident_status_id IN (
SELECT st.incident_status_id
FROM cs_incident_statuses_tl st
WHERE st.NAME IN
('Accept Order',
'Order Accepted',
'Address Retrieved',
'Analyze',
'Entered',
'Information Retrieved',
'Retrieve Address',
'Retrieve Information',
'Returned'));
目前,在运行此查询时,我在最后一列( incident_status_id )中获得以下输出:103
这个数字是 cs_incident_statuses_tl 表格中的一个关键字,在该表格中,有一个列namned name ,其中包含一个明文字符串,在此案例'分析'。
如何修改上面的SELECT查询,以便在运行时,返回不会显示103,而是“分析”'代替?我尝试过尝试各种JOIN,但我还没有找到一种很好的方式来呈现明文说明。
非常感谢任何帮助,提前谢谢!对不起,如果问题愚蠢,SQL远非我的强项。 :)
答案 0 :(得分:1)
有点笨拙,但试试
SELECT ib.incident_id,
ib.incident_status_id,
( SELECT st.NAME
FROM cs_incident_statuses_tl st
WHERE st.incident_status_id = ib.incident_status_id
) StatusName
FROM cs_incidents_all_b ib, cs_incidents_all_tl it
WHERE ib.incident_id = it.incident_id
AND ib.incident_status_id IN (
SELECT st.incident_status_id
FROM cs_incident_statuses_tl st
WHERE st.NAME IN
('Accept Order',
'Order Accepted',
'Address Retrieved',
'Analyze',
'Entered',
'Information Retrieved',
'Retrieve Address',
'Retrieve Information',
'Returned'));
答案 1 :(得分:1)
cs_incidents_all_tl未在您的查询中使用,我在此查询中将其删除:
SELECT ib.incident_id,
ib.incident_status_id,
st.NAME
FROM cs_incidents_all_b ib
INNER JOIN cs_incident_statuses_tl st ON st.incident_status_id=ib.incident_status_id
WHERE st.NAME IN
('Accept Order',
'Order Accepted',
'Address Retrieved',
'Analyze',
'Entered',
'Information Retrieved',
'Retrieve Address',
'Retrieve Information',
'Returned'));