0

ユーザー関連の情報を複数のテーブルに分割しています。単一のユーザーのデータを取得するための結合を作成しようとしていますが、多くの情報はオプションであるため、多くの列のエントリがnullになる可能性があります。これは問題ありません。私は次のクエリを作成しましたが、IDが「69」のユーザーが必要なときにすべてのユーザーを返すことを除いて機能しています。

SELECT cur_doctor_names.First_Name, cur_doctor_Names.Last_Name, w.Website
FROM cur_doctor_names
LEFT JOIN (

SELECT *
FROM cur_website
WHERE Userid =69
) AS w ON cur_doctor_names.UserId = w.Userid

次の結果が必要です:

First_Name | Last Name | Website 
ABC          XYZ         Null    

ここで、ABCはID69のユーザーの名前です。

4

3 に答える 3

2

左結合を使用しているため、Webサイトをフィルタリングしているだけです。あなたは医者のテーブルにあなたのフィルターを適用するべきです

SELECT 
    cur_doctor_names.First_Name, 
    cur_doctor_Names.Last_Name, 
    w.Website 
FROM 
    cur_doctor_names 
        LEFT JOIN cur_website AS w 
        ON cur_doctor_names.UserId = w.Userid 
WHERE     
    cur_doctor_names.UserId = 69
于 2012-10-12T08:20:25.733 に答える
2

次のように記述してみてください-where句が間違った場所にありました(左結合もそのように記述する必要はありません):

SELECT cur_doctor_names.First_Name, cur_doctor_Names.Last_Name, w.Website
FROM cur_doctor_names
  LEFT JOIN cur_website as w
  ON cur_doctor_names.UserId = w.Userid
WHERE cur_doctor_names.userId = 69
于 2012-10-12T08:21:07.227 に答える
1

私はあなたがただ書くことができると思います

SELECT cur_doctor_names.First_Name, cur_doctor_Names.Last_Name, w.Website
FROM cur_doctor_names
LEFT JOIN cur_website w ON cur_doctor_names.UserId = w.Userid
WHERE Userid =69
于 2012-10-12T08:21:23.267 に答える