Как объединить несколько внешних ключей, которые указывают на один первичный ключ? - PullRequest
0 голосов
/ 28 сентября 2018

Уважаемые,

У меня есть два отдельных заявления SQL ниже.Самостоятельно они работают нормально.

select teams.team_name_eng AS "TNAME1"
from matches, teams
where matches.team1_uid = teams.tid;

select teams.team_name_eng AS "TNAME2"
from matches, teams
where matches.team2_uid = teams.tid  

Как я могу объединить эти утверждения в одно утверждение?Я хочу, чтобы выходные данные были

TNAM1     TNAME2
-----     ------
playerA   PlayerB
playerC   playerD

Примечание: отношения внешнего ключа уже созданы.

Спасибо,

Ответы [ 7 ]

0 голосов
/ 28 сентября 2018

Вот запрос, который вы можете искать.

select teams.team_name_eng AS "TNAME1", teams.team_name_eng AS "TNAME2"
from matches, teams as teams_1, teams as teams_2 where matches.team1_uid = teams_1.tid
AND matches.team2_uid = teams_2.tid ;
0 голосов
/ 28 сентября 2018

Пожалуйста, проверьте этот запрос

Select t.team_name_eng as"TNAME1", t2.team_name_eng as "TNAME2" from matches m  join teams t on m.team1_uid = t.tid join teams t2 on m.team2_uid = t2.tid
0 голосов
/ 28 сентября 2018

использовать таблицу команд в объединении 2 раза, 1 для team1_uid и еще один для team2_uid

  select t.team_name_eng AS TNAME1,t1.team_name_eng as TNAME2
    from  matches m join  teams t
    on  m.team1_uid = t.tid
    join teams t1
        and m.team2_uid = t1.tid
0 голосов
/ 28 сентября 2018

базовое объединение объединяет одну и ту же таблицу дважды, каждый раз с другим ключом:

select t.team_name_eng AS "TNAME1",
t2.team_name_eng AS "TNAME2"
from matches m
LEFT JOIN teams t ON m.team1_uid = t.tid
LEFT JOIN teams t2 ON m.team2_uid = t.tid
;
0 голосов
/ 28 сентября 2018

Используйте Join, чтобы получить ответ

select teams1.team_name_eng AS "TNAME1",teams2.team_name_eng AS "TNAME2"
from matches
join teams as teams1 on teams1.tid = matches.team1_uid
join teams as teams2 on teams2.tid = matches.team2_uid
0 голосов
/ 28 сентября 2018

Использовать соединение дважды с разными псевдонимами

select t.team_name_eng AS "TNAME1", t1.team_name_eng AS "TNAME2"
from matches inner join teams t on matches.team1_uid = t.tid
inner join teams t1 on matches.team2_uid = t1.tid
0 голосов
/ 28 сентября 2018

Вы должны использовать псевдоним для своей таблицы:

select teams_1.team_name_eng AS "TNAME1", teams_2.team_name_eng AS "TNAME2"
from matches, teams as teams_1, teams as teams_2
where matches.team1_uid = teams_1.tid
AND matches.team2_uid = teams_2.tid ;
...