2015-05-07 4 views
1

Я пытаюсь присоединиться к 3 различным таблицам, но с трудностями следую логике в других учебниках.Как присоединиться к 3 таблицам (1 поиск) с помощью SQL

table_1(user_ID, seller_country_ID) 
table_2(user_ID, users_country_ID) 
table_3(country_ID, country_Name) 

Я пытаюсь создать запрос, который возвращает имя страны продавцов и имя страны-пользователя. Я могу использовать соединение, чтобы получить имя страны продавцов, но мои логические возможности останавливаются там, когда дело доходит до получения имени страны-пользователя. У меня есть предложение WHERE, которое еще больше ограничивает возвращаемые записи и должно быть там.

SELECT tbl1.user_ID, tbl1.seller_country_ID, tbl3.country_Name 
FROM table_1 AS tbl1 
JOIN table_3 AS tbl3 
ON tbl1.seller_country_ID = tbl3.country_ID 
WHERE <sales_type> = 1 

Итак, у меня есть таблицы 1 и 3, но не знаю, как включить таблицу 2 для получения моих результатов.

Результаты Я ищу являются:

user ID, user_country, seller_country 
010101, USA, CANADA 

ответ

3

Вы должны использовать страну посмотреть таблицу присоединиться seller_id и user_id separetly два раза, чтобы получить пользовательскую и продавец страны

create table table_1(user_ID int, seller_country_ID int) 
create table table_2(user_ID int, users_country_ID int) 
create table table_3(country_ID int, country_Name varchar(50)) 


insert into table_1 values(1, 100) 
insert into table_1 values(2, 101) 

insert into table_2 values(1, 200) 
insert into table_2 values(2, 201) 


insert into table_3 values(100, 'USA') 
insert into table_3 values(101, 'China') 
insert into table_3 values(200, 'CANADA') 
insert into table_3 values(201, 'Japan') 

Select table_1.user_ID, uc.country_Name "User Contry", sc.country_Name "Seller Country" 
FROM table_1 INNER JOIN table_2 ON table_1.user_ID= table_2.user_ID 
INNER JOIN table_3 uc ON table_2.users_country_ID= uc.country_ID 
INNER JOIN table_3 sc ON table_1.seller_country_ID= sc.country_ID 

ВЫВОДА

user_ID User Contry  Seller Country 
1  CANADA   USA 
2  Japan   China 

DEMO SQL FIDDLE

0

Вы могли бы сделать это и присоединиться к table_3 в два раза. Однажды, чтобы получить страну-пользователя и в другое время, чтобы получить страну-продавца.

SELECT 
    tbl1.user_id 
    , tbl3u.country_name 
    , tbl3s.country_name 
FROM 
    table_1 tbl1 
    JOIN table_2 tbl2 ON tbl1.user_id = tbl2.user_id 
    JOIN table_3 tbl3s ON tbl3s.country_ID = tbl1.seller_country_id 
    JOIN table_3 tbl3u ON tbl3u.country_id = tbl2.users_country_id 
WHERE <sales_type> = 1 
Смежные вопросы