sql查询按顺序连接三个表

时间:2013-03-29 05:25:18

标签: asp.net sql join

我在加入三张桌子时遇到问题。我需要所有来自AUser,CountryName来自ACountry&来自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'

tables

5 个答案:

答案 0 :(得分: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'

答案 1 :(得分: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 "'

答案 2 :(得分:0)

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

答案 3 :(得分: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')"

谢谢@ Crowne。

答案 4 :(得分: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'