作者kevin13 (小白)
看板Database
标题[SQL ] 取出商品的特价或最低价
时间Thu Oct 8 17:07:52 2015
资料库名称:MySQL
资料库版本:5.0.22
内容/问题描述:
各位好. 我有两个资料表
dessert
did 品名 上架日期
--------------------------------
1 巧克力饼乾 2015-10-07
2 奶油饼乾 2015-10-01
3 苏打饼乾 2015-10-04
price
oid did 包装 售价 价格类型 价格显示
------------------------------------------------------
1 1 包 40 member 0
2 1 盒 70 member 0
3 1 箱 900 special 1
8 1 箱 500 dealer 0
4 2 盒 90 member 0
5 2 条 30 member 1
9 2 盒 80 dealer 0
10 2 条 20 dealer 0
6 3 盒 120 member 1
7 3 箱 800 member 0
想要得到的输出
oid did 包装 售价 价格类型 品名 上架日期
---------------------------------------------------------------
3 1 箱 900 special 巧克力饼乾 2015-10-07
5 2 条 30 member 奶油饼乾 2015-10-01
6 3 盒 120 member 苏打饼乾 2015-10-04
找出每个商品的名称与价格, 若有特价(价格类型为special)就输出特价金额,
若无特价则输出该商品最低价格
我目前是依赖 price.价格显示 栏位来得到上方的输出
SELECT oid, sid, 包装, 售价, 价格类型, 品名, 上架日期 FROM `dessert`, `price`
WHERE price.价格类型 in ('member', 'special') and price.价格显示='1'
and price.did = dessert.did
若我取消 price.价格显示 栏位, 要如何下SQL才能得到一样的输出呢?
--
※ 发信站: 批踢踢实业坊(ptt.cc), 来自: 220.137.10.1
※ 文章网址: https://webptt.com/cn.aspx?n=bbs/Database/M.1444295275.A.734.html
1F:推 chippclass: 题目怪怪的,你的奶油饼乾有特价品 oid=11 一箱300 10/08 17:42
2F:→ chippclass: 为什麽最後却选了一条30的? 10/08 17:42
※ 编辑: kevin13 (220.137.152.124), 10/08/2015 20:48:57
3F:→ kevin13: 谢谢指正 因为我目前是用价格显示栏位来判断价格是否显示 10/08 20:54
4F:→ kevin13: 但您提出的问题也是我想发问的主因.有时因为价格显示栏位 10/08 20:57
5F:→ kevin13: 的数值有错误,让价格该显示却没有显示. 这就是我想删除 10/08 21:00
6F:→ kevin13: 显示栏位的原因. 10/08 21:01
8F:→ kevin13: 感谢您的回答,问题已解决. 透过您的SQL也让我知道要如何 10/09 19:23
9F:→ kevin13: 在取得最低价格时也可正确带出oid. 10/09 19:25
10F:→ kevin13: select oid, MIN(售价) from price group by sid做不到 10/09 19:28
11F:→ kevin13: 一定要先让资料排列在第一位後再做 group by 才可以 10/09 19:29