按嵌套顺序的最高结果排序

时间:2013-03-06 13:59:21

标签: sql entity-attribute-value

首先,我正在使用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个表中 - 实体表,子类型表,元字符串和元数据。但我只是想概念性答案,好像这是一个关系数据库,我可以将其转换为EAV SQL。

1 个答案:

答案 0 :(得分: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