mysql 返回多行数据_mysql – 如何连接多个表,包括查找表和返回行中的数据
我正在嘗試顯示一些簡單的計算機游戲結果,并且可以輕松地在我的代碼中逐行迭代結果.我想要它,以便每個游戲的所有相關數據都在每個記錄中,所以我可以在一行輸出所有數據,例如:
> A隊(得分45)對陣B隊(得分55),比賽持續時間:5分鐘
> C隊(得分60)對陣D隊(得分65),比賽持續時間:4.3分鐘
因此,對于一個游戲,有兩個團隊相互比賽,每個團隊在游戲結束時都得到一個分數.基本上,每個游戲最終在games_teams表中有兩行.
這是我的架構:
這是我的表格數據:
這是我想要實現的輸出,所以我可以輕松地遍歷結果并在頁面上輸出它們:
我設法通過一些可怕的SQL和許多子查詢來實現這一點:
SELECT games.game_id, game_name, game_duration,
(SELECT team_id FROM games_teams WHERE games.game_id = games_teams.game_id LIMIT 0, 1) AS team_id_a,
(SELECT team_id FROM games_teams WHERE games.game_id = games_teams.game_id LIMIT 1, 1) AS team_id_b,
(SELECT teams.team_name FROM games_teams INNER JOIN teams ON games_teams.team_id = teams.team_id WHERE games.game_id = game_id LIMIT 0, 1) AS team_name_a,
(SELECT teams.team_name FROM games_teams INNER JOIN teams ON games_teams.team_id = teams.team_id WHERE games.game_id = game_id LIMIT 1, 1) AS team_name_b,
(SELECT team_score FROM games_teams WHERE games.game_id = games_teams.game_id LIMIT 0, 1) AS team_score_a,
(SELECT team_score FROM games_teams WHERE games.game_id = games_teams.game_id LIMIT 1, 1) AS team_score_b
FROM games
這種方法的問題是它會很慢而且不能擴展.我還需要從games_teams表中提取其他游戲統計數據,以便更多的子查詢.
我嘗試的另一種方法是:
我通過以下SQL實現了這一點:
SELECT games.game_id, game_name, game_duration, teams.team_id, team_name, team_score
FROM games
INNER JOIN games_teams ON games.game_id = games_teams.game_id
INNER JOIN teams ON games_teams.team_id = teams.team_id
現在,由于每個游戲的相關數據在兩個不同的記錄中,因此在代碼中這種方式將更難以預測.我必須構建行的第一部分,然后進入下一個循環迭代并打印下一部分.然后在下一場比賽中重新開始,我試圖在一行上顯示所有信息,如:
A隊(得分45)對陣B隊(得分55),比賽持續時間:5分鐘
所以這就是為什么我認為如果它只是在一條記錄上會更容易.有沒有辦法很好地完成這個,所以如果我需要在games_teams表中有更多的列,它也可以擴展嗎?
任何幫助非常感謝,謝謝!
總結
以上是生活随笔為你收集整理的mysql 返回多行数据_mysql – 如何连接多个表,包括查找表和返回行中的数据的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: mysql 备份html数据_MySQL
- 下一篇: 易信电脑版怎么加公众号(易信怎么搜索公众