【发布时间】:2017-04-04 05:51:11
【问题描述】:
我正在尝试编写一个查询,对于任何预定的事件, 显示事件的详细信息,选择的客户和所有的详细信息 所需的设备。设备可以是内部设备或租用设备。内部设备和租用设备是数据库中的两个不同表。对于活动信息和客户信息,将有内部设备和租用设备。
我编写的查询使用联合技术。查询返回“没有返回行”,即使表中有明确的信息,如下图所示。
我已经使用 AS 函数重命名了两个表中的不同列,并将额外的列(例如租用设备的租金)设为 null。有人可以帮忙吗?
这是我的代码
COLUMN E_ID FORMAT A7
COLUMN E_NAME FORMAT A35
COLUMN E_STIME FORMAT A21
COLUMN E_FTIME FORMAT A21
COLUMN E_COST FORMAT 99999.99
COLUMN ET_ET_ID FORMAT A5
COLUMN ET_DESC FORMAT A10
COLUMN V_V_ID FORMAT A5
COLUMN V_NAME FORMAT A10
COLUMN C_C_ID FORMAT A5
COLUMN C_FNAME FORMAT A10
COLUMN C_LNAME FORMAT A7
COLUMN C_ORG FORMAT A20
COLUMN C_CNUM FORMAT 9999999
COLUMN EQ_ID FORMAT A5
COLUMN EQ_DESC FORMAT A30
COLUMN EQ_TYPE FORMAT A15
COLUMN EQ_AMT FORMAT A3
COLUMN RENT_FEE FORMAT 9999.99
COLUMN SU_NAME FORMAT A35
BREAK ON E_ID ON E_NAME ON C_C_ID ON C_FNAME ON C_LNAME ON C_ORG ON C_CNUM ON E_STIME ON E_FTIME ON E_COST ON ET_ET_ID ON ET_DESC ON V_V_ID ON V_NAME
SELECT E_ID, E_NAME, EVENT.C_C_ID ,C_FNAME, C_LNAME, C_ORG, C_CNUM, E_STIME, E_FTIME, E_COST, EVENT.ET_ET_ID, EVENTTYPE.ET_DESC, EVENT.V_V_ID, VENUE.V_NAME, INEQUIPMENT.IE_ID AS EQ_ID, INEQUIPMENT.IE_DESC AS EQ_DESC, INEQUIPMENT.IE_TYPE AS EQ_TYPE, EVENT_INEQUIPMENT.IE_AMT AS EQ_AMT, NULL AS RENT_FEE, NULL AS SU_NAME
FROM CUSTOMER, EVENT, EVENT_INEQUIPMENT, INEQUIPMENT, VENUE, EVENTTYPE
WHERE EVENT.E_ID = 'E000001'
AND EVENT.V_V_ID = VENUE.V_ID
AND EVENT.ET_ET_ID = EVENTTYPE.ET_ID
AND EVENT.C_C_ID = CUSTOMER.C_ID
AND EVENT.E_ID = EVENT_INEQUIPMENT.IE_IE_ID
AND EVENT_INEQUIPMENT.IE_IE_ID = INEQUIPMENT.IE_ID
UNION ALL
SELECT E_ID, E_NAME, EVENT.C_C_ID ,C_FNAME, C_LNAME, C_ORG, C_CNUM, E_STIME, E_FTIME, E_COST, EVENT.ET_ET_ID, EVENTTYPE.ET_DESC, EVENT.V_V_ID, VENUE.V_NAME, EXEQUIPMENT.XE_ID AS EQ_ID, EXEQUIPMENT.XE_DESC AS EQ_DESC, EXEQUIPMENT.XE_TYPE AS EQ_TYPE, EVENT_EXEQUIPMENT.XE_AMT AS EQ_AMT, EXEQUIPMENT.R_FEE AS RENT_FEE, SUPPLIER.SU_NAME AS SU_NAME
FROM CUSTOMER, EVENT, EVENT_EXEQUIPMENT, EXEQUIPMENT, SUPPLIER, VENUE, EVENTTYPE
WHERE EVENT.E_ID = 'E000001'
AND EVENT.V_V_ID = VENUE.V_ID
AND EVENT.ET_ET_ID = EVENTTYPE.ET_ID
AND EVENT.C_C_ID = CUSTOMER.C_ID
AND EVENT.E_ID = EVENT_EXEQUIPMENT.XE_XE_ID
AND EVENT_EXEQUIPMENT.XE_XE_ID = EXEQUIPMENT.XE_ID
AND EXEQUIPMENT.SU_SU_ID = SUPPLIER.SU_ID;
您可以从图像中清楚地看到表格中包含 E_ID = E000001 的数据
【问题讨论】:
标签: sql oracle11g oracle10g sqlplus