-1

我在加入三个表时遇到问题。我需要来自 AUser 的所有内容,来自 ACountry 的 CountryName 和来自 AState 的 StateName。这是我尝试过的查询。我得到的结果为每个州提供了一行。它应该为每个用户只返回 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

试试下面的代码:

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 回答
0

在 AUser 表中,您没有有关用户状态的信息,例如名为 State_ID 的列,仅存在有关 Country 的信息。所以你不能过滤用户的状态。

于 2013-03-29T05:31:42.730 回答