2016-02-29 2 views
1

У меня есть следующие:с помощью команды объединение трех таблиц (MySQL)

tblOwner: owner_num,lname,fname (PK owner_num) 
tblMarina_slip: owner_num, slip_id (PK slip_id, FK owner_num) 
tblService_Requests: service_id, slip_id, description (PK service_id, FK slip_id) 

Я новичок в MySql и нужно использовать команду Union, чтобы получить выход

tblOwner.Owner_num, tblOwner.Lname, tblOwner.Fname, tblServiceRequests.service_id, tblServiceRequests.Description 

I не знаю, как использовать команду «union» для получения нужного набора данных, когда единственное соединение между этими тремя таблицами содержит внешние ключи в tblMarina_slip и tblService_Requests.

ответ

0

Вам не нужно накидной COMAND:

select tow.Owner_num, tow.Lname, tow.Fname, ts.service_id, ts.Description 
    from tblOwner tow, tblServiceRequests ts, tblMarina_slip tm 
where tow.owner_num = tm.owner_num 
    and tm.slip_id = ts.slip_id 
+0

Большое спасибо, что направления назначения действительно заставили меня угадать все это. Оцените это разъяснение. –

-1
select col1,col2,col3 from <tablename> where <conditions> 
union 
    select col1,col2,col3 from <tablename> where <conditions> 
union 
    select col1,col2,col3 from <tablename> where <conditions> 

Примечание: col1, col2, col3 из каждой таблицы должны быть идентичны.

+0

3 таблицы не имеют одинакового количества столбцов, поэтому я не понимаю, как я могу использовать команду union (по направлениям назначения), чтобы присоединиться к ним, чтобы получить необходимый набор данных. единственное соединение, которое я могу увидеть, если внешний ключ, но я не могу понять, как использовать союз на нем. –

0

Вы должны присоединиться не союз:

SELECT t.owner_num,t.Lname,t.Fname,s.service_id,s.description 
FROM tblOwner t 
INNER JOIN tblMarina_slip p on(t.owner_num = p.owner_num) 
INNER JOIN tblService_Requests s on(p.slip_id = s.slip_id) 

Объединение используется для объединения двух или более выходов вместе (только в случае, если они совпадают с номерами столбцов и типов столбцов)

Если вы хотите отобразить более одной информации таблицы в той же строке, вы должны использовать JOIN, как в моем ответе.

EDIT:

Если необходимо использовать соединение, вы можете обмануть такие данные:

SELECT max(owner_num),max(Lname),max(Fname),slip_id,max(description) 
FROM 
    (SELECT owner_num,max(Lname) as Lname,max(Fname) as Fname, max(slip_id) as slip_id,'' as description 
    FROM(
     SELECT owner_num,Lname,Fname,0 as slip_id from tblOwner 
     UNION 
     SELECT owner_num,'' as Lname,'' as Fname,slip_id from tblMarina_slip) 
    GROUP BY owner_num 
    UNION 
    SELECT 0 as owner_num, '' as Lname, '' as Fname,slip_id,description FROM tblService_Requests) 
GROUP BY slip_id 
+0

«Направляющие указаний» используют команду union для заполнения таблицы результатов, удовлетворяющей этому запросу, всю ночь царапают мою голову, потому что союзы нуждаются в том же количестве столбцов и типов. –

+0

Yossi im просто собирается использовать соединение и спросить моего инструктора Чтобы понять это, спасибо, я верю, что «join» получает необходимую мне информацию, хотя в задании говорится «используйте команду union». Оцените это. –

+0

@NateE. Я предоставил вам решение UNION. работайте хорошо. В любом случае, я буду признателен, если вы примете мой ответ, если это вам помогло. – Yossi

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