1
我有三個不同的表,我試圖正確地加入,但我遇到了一些問題。Oracle SQL:正確加入此查詢的方法?
下面是表
- 火車:在貨車的數量列車的列表(周仰傑 - choooo)和列車長度
- WTA:旅行車噸 - 在地點在鐵路貨車的重量
- WTB:旅行車噸乙 - 在位置B處
問題在鐵路貨車的重量:一些火車全是隨機從任一/或丟失/兩個WagonTonnes表。 WagonTonnes表中缺少一些單獨的貨車。我希望我的查詢將這些情況顯示爲空缺少的地方。
我第一次嘗試這樣做,它工作正常。
select
train.id,
train.length,
a.position_in_train
a.tonnes,
from
train
left outer join wta a
using (train_id)
現在我想添加一個左外連接B,像這樣
select
train.id,
train.length,
a.position_in_train
a.tonnes,
b.position_in_train,
b.tonnes
from
train
left outer join wta a
using (train_id)
left outer join wtb b
using (train_id)
但這進入瘋狂,並一遍又一遍地重複同一行的結果。
建議的解決方案
我懷疑我不知需要得到來自列車的查詢,而不是看起來像這樣,
train.id train.length
7 163
看起來是這樣的,而不是
train.id train.position
7 1
7 2
7 3
7 4
... ...
7 162
7 163
而且然後重寫我的連接看起來像這樣:
left outer join wta a
on (a.train_id = train.train_id and a.position = train.position)
問題1:我對這個問題的一般方法是否正確? (聯合)
問題2:我的解決方案是否正確?如果是這樣,我該如何執行它?
這是真棒:)我與甲骨文合作,所以我應該能夠使用完整的加盟。你能建議如何改變你寫的SQL嗎? – 2011-03-31 02:53:11
@Tommy/answer使用完全加入更新 – RichardTheKiwi 2011-03-31 05:46:46