在类似电子表格的列中显示 MySQL 定价图表

Display MySQL Pricing Chart in Spreadsheet-like Columns

我正在尝试将 MySQL 中 export/import 的友好价格 table 输出到电子表格中。以水果及其价格区间为例

这是我所指架构的 fiddle: http://sqlfiddle.com/#!9/c526e3/4

简单地:

Table: 水果
编号
名字

Table: fruit_pricing
编号
fruit_id
min_quantity
max_quantity
价格

执行查询时:

SELECT 
  F.name,
  IF(FP.min_quantity = 1, FP.price, '0') as qty_1,
  IF(FP.min_quantity = 10, FP.price, '0') as qty_10,
  IF(FP.min_quantity = 25, FP.price, '0') as qty_25,
  IF(FP.min_quantity = 50, FP.price, '0') as qty_50,
  IF(FP.min_quantity = 100, FP.price, '0') as qty_100
FROM Fruit F
  LEFT JOIN FruitPricing FP ON FP.fruit_id = F.id

它显示的结果是这样的: 我想做的是将水果名称分组,这样只有三行:Apple、Grape 和 Orange。然后,我希望将所有 0 值替换为适当的数量。我正在尝试获得与此屏幕截图中的电子表格相同的输出:

有什么好的技巧可以做到这一点吗?我不确定这个特定问题的 sql-tech-speak,因此很难找到答案。如果可以的话,我很乐意更新我的问题主题,有人对此有更好的建议。

SELECT f.name
     , SUM(CASE WHEN fp.min_quantity = 1 THEN fp.price ELSE 0 END) qty_1
     , SUM(CASE WHEN fp.min_quantity = 10 THEN fp.price ELSE 0 END) qty_10
     , SUM(CASE WHEN fp.min_quantity = 25 THEN fp.price ELSE 0 END) qty_25
     , SUM(CASE WHEN fp.min_quantity = 50 THEN fp.price ELSE 0 END) qty_50
     , SUM(CASE WHEN fp.min_quantity = 100 THEN fp.price ELSE 0 END) qty_100
  FROM fruit f
  LEFT
  JOIN fruitpricing fp 
    ON fp.fruit_id = f.id
 GROUP
    BY name;

不过,如果是我,我可能只会执行以下操作,并处理表示层中任何剩余的显示问题...

SELECT f.name
     , fp.min_quantity 
     , SUM(fp.price) qty
  FROM fruit f
  LEFT
  JOIN fruitpricing fp 
    ON fp.fruit_id = f.id
 GROUP
    BY name
     , min_quantity;