2016-07-01 2 views
0

Итак, у меня есть БД с тремя таблицами и незначительное знание синтаксиса SQLСочетание записей таблицы

Таблица 1;

person_id; 
    person_name; 

Таблица 2;

thing_id; 
    thing_name; 

Таблица 3;

action_id; 
    action name; 
    thing_id; (referencing thing_id in the table 2) 
    person1_id(referencing person_id in the Table 1); 
    person2_id(referencing person_id in the Table 1); 

В принципе, мне нужно объединить дисплей 1-го лица, имя 2-го лица, название действия и название предмета. Могу ли я быть направлен на какой-то правильный способ соединения?

+0

http://www.w3schools.com/sql/sql_join.asp – SeanR

+0

Спасибо, я все еще не уверен, как кондиционировать отображение имен обоих лиц. – 5up9n00b13

ответ

1

Использование LEFT JOIN:

select 
    action_id, 
    action name, 
    a1.thing_name, 
    p1.person_name as person_name1, 
    p2.person_name as person_name2 
from table3 
left join table1 p1 on p1.person_id = table3.person1_id 
left join table1 p2 on p2.person_id = table3.person2_id 
left join table2 a1 on a1.thing_id = table3.thing_id 
+0

Он работал хорошо. – 5up9n00b13

1
select t3.action_id, 
     t3.action_name, 
     t1.person_name, 
     t2.person_name 
from table3 t3 
inner join table2 t2 on t2.ting_id = t3.ting_id, 
inner join table1 t1 on t1.person_id = t3.person1_id, 
inner join table1 t2 on t2.person_id = t3.person2_id 
1

В SQL SERVER это будет что-то вроде этого, вы, возможно, придется адаптировать его немного для MySQL.

SELECT p1.person_name AS first_person_name, p2.person_name AS second_person_name, t3.action_name, t2.thing_name 
FROM 
    table3 t3 
    JOIN table1 p1 
     ON p1.person1_id = t3.person_id 
    JOIN table1 p2 
     ON p2.person2_id = t3.person_id 
    JOIN table2 t2 
     ON t2.thing_id = t3.thing_id 
Смежные вопросы