-2

こんにちは、テーブルが 2 つあります

テーブルプレーヤー

id     Player           Position 
1      Messi            1,2,4 
2      C.Ronaldo        1,2,3 
3      Neymar           2,3

テーブルの位置

id             pos 
1              CF 
2              ST 
3              WF 
4              MF

そして、私はこのような出力が欲しい

id     player         pos 
1      Messi          CF,ST,MF 
2      C.Ronaldo      CF,ST,WF 
3      Neymar         ST,WF

私のSQLフィドルhttp://sqlfiddle.com/#!2/bf206/1

4

1 に答える 1

1

このようなカンマ区切りのフィールドは絶対に使用しないでください。読みにくく、非効率的で、将来的に大きな問題を引き起こす可能性があります。

ただし、プレーヤーのポジションの順序が重要でない場合は、次のようにすることもできます。

SELECT a.id, a.Player, GROUP_CONCAT(b.pos)
FROM player a
INNER JOIN position b
ON FIND_IN_SET(b.id, a.position) > 0
GROUP BY a.id, a.player

順序を維持するには、これを試すことができます(テストされていません):-

SELECT a.id, a.Player, GROUP_CONCAT(b.pos ORDER BY FIND_IN_SET(b.id, a.position))
FROM player a
INNER JOIN position b
ON FIND_IN_SET(b.id, a.position) > 0
GROUP BY a.id, a.player
于 2013-10-02T11:07:26.350 に答える