1

まず、EAVデータベースを使用しているので、エンティティと言うと、テーブルと同じです。

私には「資産」エンティティがあり、各資産には多くの「オファー」があります。各オファーには価格属性があります。各資産の最高価格でオファーを返したいのですが、これも最高価格で注文する必要があります。したがって、たとえば:

アセット1には3つのオファー(a、b、c)があり、価格は$ 4(a)、$ 7.25(b)、$ 5(c)です。

アセット2には2つのオファー(dとe)があり、価格は$ 9(d)と$ 3(e)です。

したがって、結果セットは次のようになります。

Offer       Price       Asset  
d           $9           2  
b           $7.25        1

SQLを提供しなかった理由は、すべてがエンティティテーブル、サブタイプテーブル、メタ文字列、メタデータの4つのテーブルに保持されている非リレーショナルデータベースで作業しているためです。しかし、これがリレーショナルデータベースであるかのように概念的な答えが欲しいだけで、これをEAVSQLに変換できます。

4

1 に答える 1

1

このようなもの?

SELECT    data.Asset, data.Price, o.offerID
FROM      (
          SELECT o.assetID AS Asset, MAX(o.offer) AS Price
          FROM   assetTable AS a
                 INNER JOIN offerTable AS o
                     ON a.assetID = o.assetID    
          GROUP BY o.assetID
          ) data
          INNER JOIN offerTable AS o
              ON data.Asset = o.assetID
              AND data.Price = o.offer
ORDER BY  data.Price DESC, data.assetID
于 2013-03-06T14:06:45.480 に答える