我有下面的查詢從哪裏獲取來自加入表日誌和設備的數據,但是從表設備中出來的b.id也在另一個名爲具有相同列名的設備2的表中。所以我必須寫一個查詢,其中如果設備表在該ID列上有空或空值,則必須用表日誌來提取加入表設備2的記錄,否則它必須加入表設備和日誌。如何從表X連接表Y或表Z中獲取特定記錄,其中表Y和Z具有相同的列名和相同種類的數據?
SELECT TO_CHAR (a.LOG_DATE, 'mm/dd/yyyy HH:MI:SS') LOG_DATE,
b.id,
a.atid,
a.l_type,
a.l_subtype,
a.eq,
a.name,
a.comments
FROM log a, (equipment b or equipment2 b)
WHERE a.eqid = b.eqid(+)
AND log_date BETWEEN TO_DATE ('07/01/2013', 'MM/DD/YYYY')
AND TO_DATE ('07/08/2070', 'MM/DD/YYYY')
GROUP BY a.log_date,
b.id,
a.atid,
a.l_type,
a.l_subtype,
a.eq,
a.name,
a.comments
ORDER BY b.id;
這些表之間是否有任何引用定義?這句話聽起來很奇怪:'設備表有**空**或空值'。另外,爲什麼有兩個「設備」表?他們是否共享相同的結構? – Eggplant
我們的數據庫中有兩種設備類型。假設當用戶提交他們的請求時,他們可以選擇類型1設備或類型2.兩種類型的設備數據都來自單個表eqdata,其中id(主鍵)相同,但設備類型不同。所以我們根據設備類型存儲數據。如果它的設備類型爲1,則它將轉到設備1表,否則如果其設備類型爲2,則轉到設備2表。 – user2528510
這些類型的問題通過使用ANSI-92語法變得非常容易避免或解決。 – Wolf