2010-09-23 35 views
3

兩個表我有兩個表: (COL1,COL2,COL3,COL4)加入具有不同數目的行(在SQL Server)

(COL1,COL2,COL3,COL4)

具有4個記錄(行)和具有6個rows.I想加入他們這樣的,例如加入他們在ç

ÇB.col1B.col2,A.col3,A.col4,B.col3,B.col4)(表中的記錄具有不同的值只是col1和COL2包含相同的值)

,當我在A.col1 = B.col1和A.col2 = B.col2加入他們,我拿笛卡爾乘積:(

PS我想有ç,其中B.col1 6行, B.col2,B.col3,B.col4有6行,A.col3,A.col4有4行,另有2個無效

請幫我..

+2

oyou意味着什麼一起d?什麼是外鍵,如果有的話?這個問題並不清楚。 – vulkanino 2010-09-23 07:51:56

+1

您建議的加入 - A.col1 = B.col1和A.col2 = B.col2 - 應該有效。發佈您正在嘗試的完整SQL。 – 2010-09-23 07:56:34

+1

你是否想要a)B中的所有行和A中的任何行匹配鍵,或者b)A和B中具有唯一鍵值集的所有行? – Murph 2010-09-23 08:39:01

回答

2

您需要使用FULL OUTER JOIN

Select a.Col1, 
     a.Col2, 
     a.Col3, 
     a.Col4, 
     b.Col3, 
     b.Col4 

From TableA a 
Full Outer Join TableB b on a.Col1 = b.Col1 
         And a.Col2 = b.Col2 

編輯:

「不工作」 不會幫助任何人。也許你可以提供進一步的細節,爲什麼它不適合你。

您可以添加一些示例數據和實際的預期輸出到您的問題。

e.g

Create Table #TableA 
(
Col1 
... 
) 

Insert Into #TableA 
Values (...) 

越清楚你的問題,然後更好的答案會。如果人們不能完全理解你確切的問題和預期的輸出結果,那麼我們應該如何爲你提供一個完整正確的答案。

+1

它不起作用的一個原因是很好的。這個查詢你不希望它做什麼? – 2010-09-23 08:45:48

+0

對不起,對不起。我很着急(因爲問題必須儘快解決),我錯過了重要的事情,這就是爲什麼你無法幫助我,這是我的錯。 對於這個問題,我已經問了,你的答案有效......謝謝.. 但問題是不同的,我已經解決了我的問題:) – kupa 2010-09-23 10:33:57

+0

一個永遠不會停止學習......「滿」是一個新的對我來說(雖然我甚至沒有接近成爲一名SQL Guru,但我還不錯......) – Murph 2010-09-23 11:54:24

1

嘗試

SELECT A.col1, A.col2, A.col3, A.col4, B.col3, B.col4 
FROM A 
FULL OUTER JOIN B on (A.col1 = B.col1 AND A.col2 = B.col2) 
+1

在我回答後不久,對該問題的編輯添加了對「OUTER JOIN」的需求。 – 2010-09-23 08:41:40

+0

謝謝大家。 – kupa 2010-09-23 10:37:46

+0

我已經關閉了downvote( - : – Murph 2010-09-23 11:50:39

1

您可以使用左外連接有..但我對如何使用除NULL一些其他值填充空行額外的問題..