希望mysql指导:)

时间:2014-07-02 15:55:29

标签: mysql

我有3张桌子:

  • recipe //这个包含食谱中的项目
  • item //这些是已知项目的列表。我们还在这里存储物品的起始价格。
  • 收据//这是商品的价格

此查询将返回配方中的商品名称和最新价格。 我对此查询有疑问。如果收到的项目没有记录,该项目将不会显示在我的列表中。如果收据中没有记录,那么如何从item表中以它的起始价格返回该项目?

SELECT i.name, r.price
FROM recipe_items ri
JOIN receipt r ON (ri.item = r.item)
JOIN item i ON (ri.item = i.id)
LEFT OUTER JOIN receipt r1 ON (r.item = r1.item AND 
     (r.date < r1.date OR r.date = r1.date AND r.id < r1.id)) 
WHERE r1.id IS NULL AND ri.recipe_id = 2
GROUP BY ri.item

1 个答案:

答案 0 :(得分:0)

这可能是你想要的吗?

SELECT i.name, IFNULL(r.price,i.price) as price
FROM recipe_items ri
INNER JOIN item i ON (ri.item = i.id)
LEFT OUTER JOIN receipt r USING item
WHERE ri.recipe_id = 2
GROUP BY ri.item
ORDER BY r.date