[SQL ] 取出商品的特價或最低價

看板Database作者 (小白)時間10年前 (2015/10/08 17:07), 10年前編輯推噓2(209)
留言11則, 2人參與, 最新討論串1/1
資料庫名稱: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://www.ptt.cc/bbs/Database/M.1444295275.A.734.html

10/08 17:42, , 1F
題目怪怪的,妳的奶油餅乾有特價品 oid=11 一箱300
10/08 17:42, 1F

10/08 17:42, , 2F
為什麼最後卻選了一條30的?
10/08 17:42, 2F
※ 編輯: kevin13 (220.137.152.124), 10/08/2015 20:48:57

10/08 20:54, , 3F
謝謝指正 因為我目前是用價格顯示欄位來判斷價格是否顯示
10/08 20:54, 3F

10/08 20:57, , 4F
但您提出的問題也是我想發問的主因.有時因為價格顯示欄位
10/08 20:57, 4F

10/08 21:00, , 5F
的數值有錯誤,讓價格該顯示卻沒有顯示. 這就是我想刪除
10/08 21:00, 5F

10/08 21:01, , 6F
顯示欄位的原因.
10/08 21:01, 6F

10/08 21:16, , 7F
10/08 21:16, 7F

10/09 19:23, , 8F
感謝您的回答,問題已解決. 透過您的SQL也讓我知道要如何
10/09 19:23, 8F

10/09 19:25, , 9F
在取得最低價格時也可正確帶出oid.
10/09 19:25, 9F

10/09 19:28, , 10F
select oid, MIN(售價) from price group by sid做不到
10/09 19:28, 10F

10/09 19:29, , 11F
一定要先讓資料排列在第一位後再做 group by 才可以
10/09 19:29, 11F
文章代碼(AID): #1M5Z9hSq (Database)