SQL, выбрать несколько значений на основе внешнего ключа, вернуть значения - PullRequest
0 голосов
/ 19 января 2019

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

Таблица: игрок

+----------------+-----------------+------+-----+---------+----------------+
| Field          | Type            | Null | Key | Default | Extra          |
+----------------+------------------------+-----+---------+----------------+
| id             | int(10) unsigned| NO   | PRI | NULL    | auto_increment | 
| name           | varchar(60)     | NO   |     | NULL    |                | 
| isPilot        | TINYINT(1)      | NO   |     | NULL    |                | 
| age            | int(4)          | NO   |     | NULL    |                | 
+----------------+-----------------+------+-----+---------+----------------+

таблица: команда

+----------------+-----------------+------+-----+---------+----------------+
| Field          | Type            | Null | Key | Default | Extra          |
+----------------+-----------------+------+-----+---------+----------------+
| id             | int(10) unsigned| NO   | PRI | NULL    | auto_increment | 
| pilot_id       | int(10) unsigned| NO   | FK  | NULL    |                | 
| copilot_id     | int(10) unsigned| NO   | FK  | NULL    |                | 
+----------------+-----------------+------+-----+---------+----------------+

Это хорошая настройка базы данных?

Может быть репостом SQL: внешний ключ с несколькими дочерними значениями , но не может быть применен к моему

MCVE: https://www.db -fiddle.com / f / a2fCdy6RFqgReuL8FThhDP / 2 Результат должен быть примерно таким:

+----------------+-----------------+
| Pilot          | Co-Pilot        | 
+----------------+-----------------+
| player4Name    | player3Name     | 
| player2Name    | player1Name     |
+----------------+-----------------+

Ответы [ 2 ]

0 голосов
/ 19 января 2019

Попробуйте это:

select p1.name, p2.name from player p1
join team t1 on p1.id = t1.pilot_id
join player p2 on p2.id = t1.copilot_id;

enter image description here

0 голосов
/ 19 января 2019

Похоже, вам нужны два простых СОЕДИНЕНИЯ:

SELECT
    p.name AS pilot,
    cp.name AS copilot
FROM
    team AS t
    INNER JOIN player AS p on p.id = t.pilot_id
    INNER JOIN player AS cp on cp.id = t.copilot_id
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...