我有3個表A,B,C。表A和C之間存在關係,而表B和C之間存在關係。 A和B之間沒有關係。SQL Server需要一些幫助加入,請
我真正想要做的是從B中獲取所有記錄的列表,當C中有與B有關的記錄時,給定A的值。
請讓我知道,如果這是不夠的 感謝
明確我有3個表A,B,C。表A和C之間存在關係,而表B和C之間存在關係。 A和B之間沒有關係。SQL Server需要一些幫助加入,請
我真正想要做的是從B中獲取所有記錄的列表,當C中有與B有關的記錄時,給定A的值。
請讓我知道,如果這是不夠的 感謝
明確簡單的數學規定,如果有A和C之間的關係,B和C之間的關係,有爲,儘管由協會,A和B之間的關係(通過C)。
因此,你需要將所有三個連接在一起,從A,通過C,以B:
SELECT B.*
FROM A
JOIN C ON A.x = C.x
JOIN B ON B.y = C.y
WHERE A.z = @z
您可以直接查詢這樣的事情...
SELECT B.* FROM B
INNER JOIN C ON C.aa = B.aa
INNER JOIN A ON A.bb = C.bb
WHERE A.cc = @yourvalue
@yourvalue是你需要從哪個基地選擇B表中的值的價值。如果你需要匹配從A,那麼你需要改變查詢有點像這樣一些事情複式值...
WHERE A.cc IN (@val1,@val2,@val3....,@valNth)
在此查詢中,我們使用INNER JOIN所以它會只給出那些常見的兩個記錄表LIKE如果你只加入B與C那麼它會給出在B和C共同的記錄,然後你加入A與C然後它將給出那些在A和C共同的記錄。
因此,假設在B中有類似於1,2,3的記錄,並且在C中有2,3,4,5,並且在A中有1,3,4,5
因此上述查詢的輸出(不應用WHERE原因)僅爲1,3,因爲這在所有三個表A,B,C中都很常見。
你可以得到由闖民宅此鏈接在SQLSERVER加入更多的信息..
http://blog.sqlauthority.com/2009/04/13/sql-server-introduction-to-joins-basic-of-joins/
http://www.dotnet-tricks.com/Tutorial/sqlserver/W1aI140312-Different-Types-of-SQL-Joins.html
http://www.aspdotnet-suresh.com/2011/12/different-types-of-joins-in-sql-server.html
這是真的..但我沒有得到任何記錄B。我期望有一些值出現,因爲我只是在給定上面的語句的情況下搜索B中沒有任何對應值的值。 – user1100401
如果所有三個表中都存在相應的記錄,那麼只有您選擇了該記錄,因爲您已經提到「我真正想要做的是從C中獲取所有記錄的列表,當C中有記錄時與B相關的值賦予了A的值。「 –