EAV フィード リポジトリとして編成された 1 つのテーブルから結果を抽出する必要があります。必要なのは、リレーショナル テーブルのような結果を返すことです。私はそのようなスキーマを使用しています:
テーブル スキーマ
meta table
-----------------------
idmeta | entity_identity(fk) | products_idproduct(fk) | products_feeds_idfeed(fk) | value |
1 | 1 | 1 | 1 | First product first val |
2 | 2 | 1 | 1 | First product second val|
3 | 1 | 2 | 1 | 2nd product first val |
4 | 2 | 2 | 1 | 2nd product second val |
5 | 1 | 3 | 1 | 3rd product first val |
6 | 2 | 3 | 1 | 3rd product second val |
そのため、idfeed ごとにすべての製品からすべての値を抽出しようとしています。この場合、私は次のようなものを取得しようとしています:
欲しかった結果..
+----------------------+---------------------------+---------------------------+
| products_idproduct | field1 | field2 |
+--------------------+--------------------------+------------------------------+
| 1 | First product first val | First product second val |
+--------------------+--------------------------+------------------------------+
| 2 | 2nd product first val | 2nd product second val |
+--------------------+--------------------------+------------------------------+
| 3 | 3rd product first val | 3rd product second val |
+--------------------+--------------------------+------------------------------+
私はいくつかの合体文を試してきましたが、MAX関数、または代わりにいくつかのNULL値のため、1行しか得られません..:
私が今しようとしていること..
SELECT DISTINCT products_idproduct
, MAX( IF(entity_identity = 1, value, NULL) ) as 'field1'
, MAX( IF(entity_identity = 2, value, NULL) ) as 'field2'
FROM meta
WHERE products_feeds_idfeed = 1;
そして明らかに、これは最後の行(最後の製品)のみを返します..
+----------------------+---------------------------+---------------------------+
| products_idproduct | field1 | field2 |
+--------------------+--------------------------+------------------------------+
| 3 | 3rd product first val | 3rd product second val |
+--------------------+--------------------------+------------------------------+
リレーショナル テーブルのようにすべての製品の結果を取得する方法について何かアイデアはありますか?