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 个表中——实体表、子类型表、元字符串和元数据。但我只想要概念上的答案,就好像这是一个关系数据库,我可以将它翻译成 EAV SQL。

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 回答