Привет народа Я озадачен с проблемой я получаю следующий MySQL Query:MySQL выберите с внутренним соединением дает мне зацикливание результату
SELECT
tp.ID AS tpid,
p.firstName AS pfname,
p.lastName AS plname,
p.dob AS pdob,
fix.homeTeamID AS fixhtid
FROM fixtures AS fix
INNER JOIN teamSeason AS ts ON fix.homeTeamID = ts.ID
INNER JOIN teamPlayers AS tp ON tp.teamSeasonID = ts.ID
INNER JOIN person AS p ON tp.personID = p.ID
WHERE fix.homeTeamID =2
Я ожидал 9 строк в результат с этим запросом, но вместо этого есть имеют более 180 строк, где оригинальные 9 строк повторяются 19 раз.
Я не уверен, как устранить эту проблему и задавался вопросом, может ли кто-нибудь помочь мне - мой мозг - это месиво.
Я попытался удалить «fix.homeTeamID AS fixhtid» из запроса, но это не остановит результат цикла.
Есть ли способ показать результат без цикла?
Должен ли я публиковать связанные таблицы mysql онлайн, чтобы вы могли видеть?
Благодаря
Пит
UPDATE
Я обновил свой SQL запрос к этому:
SELECT
tp.ID AS tpid,
p.firstName AS pfname,
p.lastName AS plname,
p.dob AS pdob,
fix.homeTeamID AS fixhtid
FROM fixtures AS fix
INNER JOIN teamSeason AS ts
ON ts.ID=fix.homeTeamID
INNER JOIN teamPlayers AS tp
ON tp.teamSeasonID = ts.ID
INNER JOIN person AS p
ON p.ID = tp.personID
WHERE fix.homeTeamID =2
GROUP BY tpid
как предложено Дип. Я добавил «GROUP BY», и он зафиксировал мой результат. Огромное спасибо Дипу и всем остальным, которые нашли время ответить.
Второе обновление
Я обновил запрос снова к этому:
SELECT DISTINCT tp.ID AS tpid,
p.firstName AS pfname,
p.lastName AS plname,
p.dob AS pdob,
fix.homeTeamID AS fixhtid
FROM fixtures AS fix
INNER JOIN teamSeason AS ts
ON fix.homeTeamID=ts.ID
INNER JOIN teamPlayers AS tp
ON tp.teamSeasonID=ts.ID
INNER JOIN person AS p
ON tp.personID=p.ID
WHERE fix.homeTeamID=2
как предложил Strawberry и Иоанна во имя лучшей практики я заменил «GROUP BY» вместо "SELECT DISTINCT"
Спасибо людям. Я узнал что-то новое.
пользовательскую группу 'by' в запросе с соответствующим полем .. –
вероятно, один из столбцов в РЕГИСТРИРУЙТЕСЬ состоянии это неправильно, и он получает перекрестное соединение. – Mihai
Да, вы должны опубликовать таблицы. Еще лучше, добавьте их здесь, а также в [sqlfiddle] (http://www.sqlfiddle.com). –