**SUB_ID_DTLS:**
================
Sub_Id Id_Val
================
497 16000123-9
495 16000123-9
489 16000281-7
**SUB_DTLS**
===========
Sub_id TxnId
=============
499 683
498 682
497 681
**TN_DTLS**
===========
TN TxnId
==================
9999098766 683
9999098766 682
9999098765 681
**PORT_DTLS**
=============
TxnId Time
==============
683 04:47.3
682 03:45.4
681 05:21.4
以上四张桌子是我的桌子。我需要系统日期之间的TN。
以下是我的查询。
select A.TN,B.TXN_ID,C.ID_VAL,D.SUB_ID
from TN_DTLS a,PORT_DTLS b,SUB_ID_DTLS c,SUB_DTLS d
where ((A.TXN_ID=B.TXN_ID) and (B.TXN_ID=d.TXN_ID)) and (C.SUB_ID=D.SUB_ID) and b.TIME between sysdate - 1 AND sysdate;
但是那段时间我没有得到所有TN。我需要没有ID_Val的TN。
答案 0 :(得分:0)
您需要使用left join
。遵循一个简单的规则:不要在from
子句中使用逗号。
select A.TN, B.TXN_ID, C.ID_VAL, D.SUB_ID
from TN_DTLS a left join
PORT_DTLS b
on A.TXN_ID = B.TXN_ID b.TIME between sysdate - 1 AND sysdate left join
SUB_DTLS d
on B.TXN_ID = d.TXN_ID
SUB_ID_DTLS c
on C.SUB_ID = D.SUB_ID;
这将保留a
中的所有记录,即使其他表中没有任何匹配项也是如此。
答案 1 :(得分:0)
从tn_dtls中选择tn,id_value,txn_id,sub_ID在A.TXN_ID = B.TXN_ID上的连接port_dtls b在a.TXN_ID = C.TXN_ID左连接上的左连接sub_dtls c np_sub_id_dtls d在D.SUB_ID = C.SUB_ID,其中b.TIME在sysdate - 1和sysdate之间;