簡體   English   中英

MySQL選擇內部聯接和聯合

[英]MySQL select inner join and union

我有這兩個表。 我當前有玩家id_player,我想從該玩家(id_player)及其對手信息中選擇所有游戲。 當前玩家和對手玩家使用相同的id_game連接。 要么

桌子

table game:`id_game` (...)
table game_player:`id_game_player, id_player, id_game`(...)

“將當前玩家和他的對手的所有單獨游戲信息提供給我,並加入他們游戲的信息(按游戲分組)”

結果為:

      +---player game info
game1 |
      +---opponent game info

      +---player game info
game2 |
      +---opponent1 game info

      +---player game info
game2 |
      +---opponent2 game info

誰能為我提供MySQL解決方案?

謝謝


編輯:我嘗試使用此代碼,但我不確定這是最快的方法(在何處),是否有任何方法可以對上述結果進行分組?

SELECT * FROM game_player
    JOIN `game` ON game.id_game = game_player.id_game
    WHERE game_player.id_game
    IN (
    SELECT game_player.id_game
    FROM `game_player`
    WHERE game_player.id_player =2)

試試看

SET @player_ID = 0;                  -- <<== the playerID
SELECT  a.*, b.*, 'player' Status         -- this is the first part of the union
FROM    game a                            -- which gets all the game of
        INNER JOIN game_player b          -- the selected player and its info
            ON a.id_game = b.id_game
WHERE   id_player = @player_ID 
UNION ALL
SELECT  d.*, c.*, 'opponent' status
FROM    game_player c
        INNER JOIN
        (
            SELECT  a.*
            FROM    game aa
                    INNER JOIN game_player bb
                        ON aa.id_game = bb.id_game
            WHERE   bb.id_player = @player_ID
        ) d ON c.id_game = d.id_game AND c.id_player <> @player_ID
ORDER   BY id_game, status

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM