我有三個表,我會打電話給他們的表A,B和C在這裏。表A有一個一對多的關係B和B有一個與C.許多關係對於此查詢,我只希望在C disctinct值,但下面的查詢會給我匹配B.選擇從一個
是multpileÇ記錄現在我的查詢是這樣的:
Select * from A Left Outer Join B on A.key = B.key Left Outer Join C on B.AltKey = C.AltKey
任何想法? 非常感謝提前。
我有三個表,我會打電話給他們的表A,B和C在這裏。表A有一個一對多的關係B和B有一個與C.許多關係對於此查詢,我只希望在C disctinct值,但下面的查詢會給我匹配B.選擇從一個
是multpileÇ記錄現在我的查詢是這樣的:
Select * from A Left Outer Join B on A.key = B.key Left Outer Join C on B.AltKey = C.AltKey
任何想法? 非常感謝提前。
你爲什麼要使用LEFT OUTER JOIN?嘗試用普通的舊JOIN切換,看看你是否得到你想要的。
我使用左外部聯接,因爲我想查看A中的所有記錄,而不管它們是否具有B中的匹配和來自B的所有記錄,而不管它們是否具有C中的匹配。但是我不想看到C的匹配的多個記錄到B的,每場比賽只有一個,因此對不同的願望。 I.E. C中有5行的鍵值與B中記錄的鍵相匹配,但我只想顯示一條記錄,而不是五條記錄。那有意義嗎? – Sean
Select distinct C.* from C
Left Outer Join B on C.a = B.a
Left Outer Join A on B.a = A.a
他希望A的所有記錄,而不管B是否存在。並且B必須存在以使C鏈接到它。所以他不會用這個查詢得到所有的A。 – FlyingStreudel
但我想查看B和A中的列。這隻會顯示錶C中的列,對嗎? – Sean
正確struedel; ) – Sean
您能否提供一些A,B和C的樣本數據,並確定您真正想要的行?另請指定您正在使用的SQL Server版本。例如,對於SQL Server 2000與SQL Server 2008,解決方案可能會有很大不同。 –
Hey Aaron,我正在使用MSSQL 2008.我提供了一個關於我在AJ評論中看到的內容的詳細描述。將表A視爲項目,將B視爲審覈,將C視爲調查結果。因此,這將是這個樣子:Project0空空,PROJECT1 Audit1 Finding1,Project2的Audit2空,Project2的Audit3 Finding3,項目2審計4空,等等。因此,舉例來說,我不希望Project2的Audit3 Finding4以展會爲記錄。 – Sean
仍認爲這將是有益的看到。很難確定像「每個匹配只有一個,因此對不同的意願」和「我只想顯示一條記錄」這樣的語句的真正關係方面 - 如果C中有5行,則需要告訴SQL Server哪一個你要。如果你只想知道C中至少有一行,那麼可以用不同的方式解決(例如EXISTS子查詢而不是聯接)。因此,請提供樣本數據和期望的結果。 –