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