我想結合內部和外部連接,但無法讓它工作。我一共有7個表需要在一個查詢中連接在一起。 首先,我只有6人,並沒有問題,因爲一切都是內部聯接。但是現在我已經添加了第七張桌子,並且無法正確完成。我想我需要使用OUTER JOIN,但不知道如何。 我只會在這個例子中使用3個表格,因爲我認爲如果你能幫助我開始,我可以設法解決其餘問題。加入幾個表與內部和外部。
列表我的表:
表1 = dbo.kala(這是第七表我加入
表2 = dbo.ti
表3 = dbo.ao
SELECT kala.kaldat
From dbo.kala
Where kala.kaldat Between '170407' AND '170410'
。
以上查詢返回以下結果:
Result1
|kaldat |
|2017-04-07|
|2017-04-08|
|2017-04-09|
|2017-04-10|
。
SELECT ti.startdat, ti.artnr, ti.aonr, ti.aopos, ao.prodgr
From dbo.ti
INNER JOIN dbo.ao ON ti.aonr = ao.aonr AND ti.aopos = ao.aopos
Where ti.startdat Between '170407' AND '170410'
上述查詢返回以下結果。
Result2
ti.startdat| ti.artnr| ti.aonr|ti.aopos|ao.prodgr|
2017-04-07 | 123 | 0001 |10 |50 |
2017-04-10 | 456 | 0002 |20 |60 |
我想要的結果是這(3)。
Result3
kala.kaldat| ti.artnr| ti.aonr|ti.aopos|ao.prodgr|
2017-04-07 | 123 | 0001 |10 |50 |
2017-04-08 | | | | |
2017-04-09 | | | | |
2017-04-10 | 456 | 0002 |20 |60 |
dbo.kala和dbo.ti之間的連接在kala.kaldat = ti.startdat上。
希望你們明白我想要通過這裏。如果不是,我事先道歉,並樂意嘗試解釋更好。提前致謝!
*請注意,其餘4個不在此示例中的表需要與dbo.ti連接(INNER?)。
左連接是你所追求的,但是如果你有任何where子句條件涉及到「左」連接的「右」表上的表,那麼它需要放在連接上或者你的左連接模擬一個內連接。 – xQbert
您正嘗試選擇3個表中沒有索引的數據,因爲您需要使用左連接或完全外連接,具體取決於您想要獲取的內容--->請參見https://i.stack。 imgur.com/66zgg.png –
我確實有更多的地方連接到dbo.ti的子句...我需要的所有從dbo.kala是日期列表。然後我希望剩下的表格只填寫正確日期的信息。 – SisU