首先,我正在使用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。
答案 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