我想结合内部和外部连接,但无法让它工作。我一共有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