Как исправить эту простую ошибку внешнего ключа в MySQL - PullRequest
0 голосов
/ 10 июня 2019

Как мне сделать этот запрос?О простом запросе внешнего ключа

Это небольшой проект, который я выполняю

Например, с этими игроками:

проигрыватели:

| PlayerId | name | team_TeamId |

| 1        | john | 1           |
| 2        | myke | 1           |
| 3        | carl | 2           |

И это команды:

команда:

| TeamId | name        |

| 1      | Arsenal     |
| 2      | Real Madrid |
SELECT player.name, team.name
FROM player, team
WHERE player.team_TeamId = 1

Этот запрос показывает мне это:

| name | team.name   |

| john | Arsenal     |
| myke | Arsenal     |
| john | Real Madrid |
| myke | Real Madrid |

Он "работает" с этим запросом (очевидно, этоне правильная форма):

SELECT *
FROM player, team
WHERE player.team_TeamId = 1 AND team.TeamId = 1
| name | team.name   |

| john | Arsenal     |
| myke | Real Madrid |

Я ожидал только игроков с teamId = 1, но фактический результат - игроки с teamId = 1, но повторяется со ВСЕМИ командами.

Ответы [ 2 ]

0 голосов
/ 10 июня 2019

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

select pt.name,tt.name from (SELECT player.*, @i:=@i+1  AS rowNum 
 FROM player , (SELECT @i:=0) AS temp
WHERE player.team_TeamId = 1) as pt LEFT JOIN
(SELECT team.*, @j:=@j+1  AS rowNum  from team  , (SELECT @j:=0) AS temp ) as tt  on 
pt.rowNum = tt.rowNum
0 голосов
/ 10 июня 2019
SELECT *
FROM player
JOIN team ON player.team_TeamId = team.TeamId
WHERE team.TeamId = 1
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...