-1

3 つのテーブルの結合に問題があります。AUser からのすべて、 ACountry からの CountryName 、および AState からの StateName が必要です。これは私が試したクエリです。私が得ている結果は、州ごとに1行です。ユーザーは自分の住所に 1 つの州しか持てないため、ユーザーごとに 1 行だけを返す必要があります。

SELECT * 
FROM AUser join ACountry on AUser.Country_ID=ACountry.ID 
     join AState on ACountry.ID=AState.Country_ID 
where AUser.Email='abc@gmail.com'

テーブル

4

5 に答える 5

1

AUser に state_id 列が必要だと思います。
または、AUserAddress で可能性が高いため、AUser.id を使用してユーザー アドレスに参加し、AUserAddress の状態 ID を使用して AState に参加します。

以下のクエリを試してください...そして次回は怠惰にならないでください-最初にあなた自身の試みを示してください!

SELECT u.*
FROM AUser u
join ACountry c
  on c.ID = u.Country_ID
join AUserAddress a
  on a.user_ID = u.ID
join AState s
  on s.ID = a.State_ID
where AUser.Email='abc@gmail.com'
于 2013-03-29T05:30:36.140 に答える
0

これが答えです:

 (SELECT * FROM AUser join AUserAddress on AUserAddress.AUser_ID=AUser.ID join ACountry on AUserAddress.Country_ID=ACountry.ID join AState on AUserAddress.State_ID=AState.ID where AUser.Email='abc@gmail.com')"

ありがとう@クラウン。

于 2013-03-29T05:50:06.883 に答える
0
Select AUser.*,ACountry.CountryName,AState.StateName from AUser 
left join ACountry on AUser.Country_ID=ACountry.ID 
left join AState on ACountry.ID=AState.Country_ID 
where AUser.Email='abc@gmail.com'
于 2013-03-29T06:06:26.550 に答える
0

AUser テーブルには、State_ID という名前の列など、ユーザーの州に関する情報はありません。国に関する情報のみが存在します。したがって、ユーザーの状態をフィルタリングすることはできません。

于 2013-03-29T05:31:42.730 に答える
0

以下のコードを試してください:

SELECT * 
FROM AUser 
left join ACountry on AUser.Country_ID=ACountry.ID 
left join AState on ACountry.ID=AState.Country_ID 
where AUser.Email='abc@gmail.com "'
于 2013-03-29T05:28:42.550 に答える