2011-02-06 1 views
0

TABLE知らない:サービス:TSQL:それは可能であることを確認するために、登録しよう - しかし、どのように

ServiceID ServiceName 
1   Cleaning 
2   Painting 
3   Driving 
4   Cooking 

TABLE:のservicemembers:

ServiceMemberID MemberID ServiceID 
1    10  3 

問合せ:

SELECT s.ServiceName, sm.MemberID 
FROM Services s 
JOIN ServiceMembers sm ON s.ServiceID = sm.ServiceID 
WHERE sm.MemberID = 10 

返品:

Driving 10 

質問: は、テーブルを結合する方法を、私はTSQLで次取得できます。事前に

Cleaning  NULL 
Painting  NULL 
Driving  10 
Cooking  NULL 

感謝。

答えて

2

これはそれを行う必要があります。

 
SELECT s.ServiceName, sm.MemberID 
FROM Services s 
    LEFT JOIN ServiceMembers sm ON s.ServiceID = sm.ServiceID AND sm.MemberID = 10 
+0

+1。あなたはとても速いです: – a1ex07

+0

これはそれでした。私はLEFT JOINだけをやっていましたが、違いはWHERE句にsm.MemberIDがあったことです。どんな考えが違うか。 SELECT s.ServiceName、sm.MemberID FROM Services LEFT JOIN ServiceMembersをオンにします.S.ServiceID = sm.ServiceID WHERE sm.MemberID = 10 –

+1

WHERE句は、外部結合を効果的に内部結合に変換します。何が起こるか考えてみてください。まず、外部結合は、sm.MemberID列にNULL値を持つ行を返します。次に、WERE句は、結果セットからすべての行を削除します。ここで、MemberIDは10です。これは、外部結合によってNULLになるものを削除します。 –