2013-03-29 5 views
-1

У меня проблемы с соединением трех таблиц. Мне нужно все от AUser, CountryName от ACountry & StateName от AState. Это запрос, который я попробовал. Результат, который я получаю, дает одну строку для каждого состояния. Он должен возвращать только 1 строку для каждого пользователя, поскольку пользователь может иметь только одно состояние в своем адресе.sql-запрос, соединяющий три таблицы в последовательности

SELECT * 
FROM AUser join ACountry on AUser.Country_ID=ACountry.ID 
    join AState on ACountry.ID=AState.Country_ID 
where AUser.Email='[email protected]' 

tables

+0

Какая связь между таблицами? –

ответ

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='[email protected] "' 
+0

nope, такой же результат ..! – adityawho

+0

@Aditya Nawandar просто комментирует предложение where и выясняет, получаете ли вы какие-либо данные. – 2013-03-29 05:33:14

1

Я хотел бы ожидать, что вам нужно state_id колонку на Auser.
Или, скорее всего, на AUserAddress, поэтому присоединитесь к пользовательскому адресу, используя AUser.id, а затем присоединитесь к AState, используя идентификатор состояния из AUserAddress.

Попробуйте выполнить запрос ниже ... и в следующий раз не ленитесь - сначала покажите свою попытку!

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='[email protected]' 
+0

У меня есть state_ID в AUserAddress ... Итак, каков будет запрос? – adityawho

0

В Auser таблице вы не имеете информацию о состоянии пользователя, например, колонка с именем State_ID, только информация о стране присутствует. Таким образом, вы не можете фильтровать состояние пользователя.

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='[email protected]')" 

Спасибо @ Краун.

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='[email protected]'