我有三個表,並且所有三個表具有相同的請求ID字段。唯一行到三個表
- Sched_G包括所有數據
- 其中Sched_P和Sched_I每一行中Sched_G存在。
- 但不Sched_G的每一行都存在於P或一
我在尋找它存在於Sched_G和Sched_I所有行,但在Sched_P不存在。
請求ID與所有三個表的主鍵相同。這將是最簡單的方法?我嘗試使用Join語句,但卡住了,並且還發現了g.primary_key = r.primary_key,但是這導致沒有數據出現。任何幫助?
我有三個表,並且所有三個表具有相同的請求ID字段。唯一行到三個表
我在尋找它存在於Sched_G和Sched_I所有行,但在Sched_P不存在。
請求ID與所有三個表的主鍵相同。這將是最簡單的方法?我嘗試使用Join語句,但卡住了,並且還發現了g.primary_key = r.primary_key,但是這導致沒有數據出現。任何幫助?
這會給你所有的G我
SELECT G.*
FROM G
JOIN I
ON G.Request_id = I.Request_id
現在,你想知道那些P中的arent
SELECT G.*
FROM G
JOIN I
ON G.Request_id = I.Request_id
LEFT JOIN P
ON G.Request_id = P.Request_id
WHERE P.Request_id IS NULL
我在尋找它存在於所有Sched_G行和Sched_I
做一個INNER JOIN
說
select sg.* from sched_g sg inner join sched_i si
on sg.id = si.id;
然後做一個LEFT JOIN
select xxx.*
from (
select sg.* from sched_g sg inner join sched_i si
on sg.id = si.id) xxx
left join sched_p sp on xxx.id = sp.id
where sp.some_col is null;
我不認爲你需要一個子查詢呢? –
,如果你使用的是Oracle您還可以使用減:
select *
from Sched_G t1 join Sched_I t2 on t1.RequestID= t2.RequestID
minus
select RequestID from Sched_P
您正在尋找地方「它」存在於所有的行...什麼是嗎**」? **從哪個表中排**? (你說這三個表有一個共同的列,但除此之外,我認爲它們是不同的 - 那麼,來自WHICH表的行嗎?)還是隻查找存在於「Sched_I」中而不存在於「Sched_P」中的「Request_Id」?你說「在Sched_G'和'Sched_I'中,但不是在...」 - 爲什麼你需要檢查它們是否在'Sched_G'中?你說'Sched_I'中的每個「行」(我只假設每個「Request_Id」)都存在於'Sched_G'中,所以你不需要檢查Sched_G **和** Sched_I,第二個就足夠了。 – mathguy
在任何情況下,您都不需要連接或'MINUS';你需要一個「反連接」(它比連接工作少)。就像'select request_id from schedule_I',其中request_id不在(從schedule_P選擇request_id)''。 – mathguy