2017-10-15 66 views
0

我有兩張我想加入的表。我想通過特定的日期(CreateDate)內部連接記錄。我想要的是在沒有任何東西可以加入時不要記錄。我加入名稱字段。對於特定日期(CreateDate),兩個表中都應該有1:1的姓名記錄。如果不是,我不想從第一張桌子或第二張桌子拿起獨立的唱片。下面的例子來看看。只有當記錄加入時內部連接

for all tables: 
Id - PK/AI 
Name - varchar 
FieldX/FieldY - varchar 
CreateDate - Datetime 

表1

ID | Name | FieldX | CreateDate 

表2

ID | Name | FieldY | CreateDate 

表3

ID | Name | FieldX | FIeldY | CreateDate 

例子:

表1:

1 John value10 2017-09-03 
2 Lili value20 2017-09-03 
3 John value30 2017-10-12 
4 Lili value40 2017-10-12 

表2:

1 John value50 2017-09-03 
2 Lili value60 2017-09-03 
3 John value70 2017-10-12 
4 Lili value80 2017-04-01 

現在說我要加入的2017-09-03天時,這應該是最後的結果

表3:

John value10 value50 2017-09-03 
Lili value20 value60 2017-09-03 

對於天:二零一七年十月十二日 注意,對於莉莉表2中沒有那一天的記錄意味着沒有記錄採取(反之亦然,如果不會在表1和在表2同樣的情況 - 我不想把記錄)

表3:

John value30 value70 2017-10-12 

什麼我到目前爲止是這樣的:

INSERT INTO Table3 (Name, FieldX, FieldY, CreateDate) 
SELECT T1.Name, T1.FieldX, T2.FieldY, T1.CreateDate FROM Table1 As T1 
INNER JOIN Table2 As T2 ON T1.Name=T2.Name 
WHERE T1.CreateDate = '2017-10-12' 

然而事情是錯了,我沒有得到正確的結果。任何人都可以幫我解決我失蹤的事情嗎?

+0

但約翰在兩個表中都有'2017-10-12'的記錄。你爲什麼期望沒有加入'2017-10-12'的記錄? –

+0

請參閱https://meta.stackoverflow.com/questions/333952/why-should-i-provide-an-mcve-for-what-seems-to-me-to-be-a-very-simple-sql-查詢 – Strawberry

+0

@TimBiegeleisen完全約翰在這兩天的表中都有記錄,所以這意味着它可以爲John獲取一個記錄加入。然而,不是莉莉因此不在那裏。這是正確 – Unknown

回答

1

如果我沒有誤解你的問題,你希望兩個表記錄都按你提供的日期過濾。在這種情況下,您應該在WHERE中爲第二張表添加相同的條件。

像這樣:

INSERT INTO Table3 (Name, FieldX, FieldY, CreateDate) 
SELECT T1.Name, T1.FieldX, T2.FieldY, T1.CreateDate FROM Table1 As T1 
INNER JOIN Table2 As T2 ON T1.Name=T2.Name 
WHERE T1.CreateDate = '2017-10-12' AND T2.CreateDate = '2017-10-12' 

注意在WHERE條款AND T2.CreateDate = '2017-10-12'

在我測試時,這看起來像你描述的那樣工作。

+0

是的,似乎是工作。 – Unknown