2016-12-20 2 views
1

У меня есть время, пытаясь достичь того, что я хочу сделать. Мне интересно, можно ли это сделать? У меня есть следующие 4 таблицы:Необходимый правильный синтаксис для объединения нескольких таблиц

Tables-user_names 
field1 =user_id (PK) 
field2 =user_name 

Table-files 
field1 =user_id (FK) 
field2 =file_name 
field3 =city_id (FK) 
field4 =state_id (FK) 

Table-city 
field1 =city_id (PK) 
field2 =city 

Table-state 
field1 =state_id (PK) 
field2 =state 

Что я хотел бы видеть в результате SQL-запроса является: user_name, имя_файла, город, штат

Возможно ли это или я мог управляться в правильное направление?

ответ

-1
SELECT t1.user_name, 
     COALESCE(t2.file_name, 'NA'), 
     COALESCE(t3.city, 'NA'), 
     COALESCE(t4.state, 'NA') 
FROM user_names t1 
LEFT JOIN files t2 
    ON t1.user_id = t2.user_id 
LEFT JOIN city t3 
    ON t2.city_id = t3.city_id 
LEFT JOIN state t4 
    ON t2.state_id = t4.state_id 

Я LEFT JOIN здесь потому, что данный пользователь не может иметь запись в files, state или city таблиц. В этом случае для столбцов имени, города или состояния появится NULL, которые мы можем «поймать» с помощью COALESCE. В этом случае я решил заменить его NA, хотя вы можете изменить его по своему усмотрению.

-1

Просто объединение двух таблиц может дать вам результат:

SELECT u.user_name,f.file_name,f.city, f.state FROM user_names as u RIGHT JOIN files as f ON f.user_id = u.user_id

0

Здесь Соединить запрос для объединения таблиц:

SELECT file_name,user_name,city,state FROM files f LEFT JOIN user_name u ON f.user_id=u.user_id LEFT JOIN city c ON f.city_id=c.city_id LEFT JOIN state s ON f.state_id = s.state_id

Смежные вопросы