0

複数の行を結合する必要がある MySQL のテーブルがあります。テーブルは次のようになります。

Order_ID  |  Item_ID  |  color
1           1           white
1           2           red
2           1           black
2           1           blue

Order_ID に従って行を結合すると、次のような結果が得られます。

Order_ID  |  Item_1_ID  | Item_1_color  | Item_2_ID  | Item_2_color
1           1             white           2            red
2           1             black           1            blue

グループ連結を使用して 2 つの行を 1 つに結合する方法があることは知っていますが、グループ連結を使用する場合のように結合されるのではなく、各フィールドが分​​離されたままになるようにしたいと考えています。

私はすでに次のようなステートメント結合も使用してみました:

SELECT o.*, o1.* FROM order o INNER JOIN order o1 ON o.Order_ID = o1.Order_ID

しかし、いくつかのケースでは、結合したい行が多すぎて、MySQL の 61 結合の制限を超えています。

どんな助けでも感謝します、ありがとう。

- -編集 - -

注文ごとのアイテム数を決定する group と呼ばれる別のパラメーターがありました。テーブルは次のようになります。

Order_ID   |  group
 1           1
 2           1

そのため、注文が同じグループに属している場合、列の数は同じになりますが、あるグループと別のグループでは列の数が異なる場合があります。また、私のクエリは 1 つのグループごとのみなので、列数の違いは問題ありません。

4

1 に答える 1

1

を使用するGROUP BY order_idと、結果がグループ化され、説明した結果セットが得られます。

編集:

あなたが達成しようとしていることによると、データベースの正規化について読むことをお勧めします。テーブルに主キーがないようですね。あなたのテーブル構造は正直なところ意味がありません。注文を1つの別のテーブルに保存する必要があります.このオーダーに属します。

同じ結果をすべて 1 行に追加するのではなく、各行を配列に読み取ってから、配列をループします。

于 2012-08-05T10:35:46.570 に答える