0

ブロック :

-------------
| id | name |
-------------
| 1  | test|
-------------

ブロック関係座標

-------------
| id | blockid| coordid
-------------
| 1  | 1   | 1
 -------------
| 1  | 1   | 2
 -------------
 | 1  | 1   | 3
 -------------

ブロック座標

    -------------
    | id | name| type
    -------------
    | 1  | North   | N
     -------------
    | 2  | East   | E
     -------------
     | 3  | South   | S
     -------------

今、私はこのテーブルに参加して、このような結果を1行だけで取得したいのですが、結果テーブルのタイトルはあまり重要ではありません。このフィールドの最後のテーブルから入力するだけです

すべてのブロック テーブルには、coords テーブルとの 3 つの関係があります

    -------------
    name| NORTH | EAST | SOUTH
    -------------
    test | North | East | South
4

2 に答える 2

2

これを試して:

SELECT
  b.name,
  MAX(CASE WHEN type = 'N' THEN c.name END) AS North,
  MAX(CASE WHEN type = 'E' THEN c.name END) AS EAST,
  MAX(CASE WHEN type = 'S' THEN c.name END) AS SOUTH
FROM block AS b
INNER JOIN block_relation_coords AS r ON b.id = r.blockid
INNER JOIN block_coords          AS c ON c.id = r.coordid
GROUP BY b.name;

ここで実際にそれを見てください:

これにより、次のことが得られます。

| NAME | NORTH | EAST | SOUTH |
-------------------------------
| test | North | East | South |
于 2013-05-18T12:53:25.570 に答える
1

ピボット テーブルを作成する必要があります... このページでは、ピボット テーブルについてさらに多くの情報を得ることができます。

http://en.wikibooks.org/wiki/MySQL/Pivot_table

それが役に立てば幸い。

于 2013-05-18T12:46:24.863 に答える