![]() |
||
|
Major Member
![]() 加入日期: Aug 2005
文章: 237
|
謝謝:麻煩了,如何寫出這個sql
我有兩個資料表
分別是產品資料表及訂單資料表 其欄位分別如下 產品資料表(產品代號、產品名稱、一箱單價、一盒單價)如圖一 訂單資料表(流水號、產品代號、單位、數量)如圖二 圖二的單位表示 如果是1,就去抓一箱單價 如果是2,就去抓一盒單價 請問: 寫出一個sql 產生如圖三的資料表呢? 圖三的金額500表示:5*100=500 謝謝 |
|||||||
|
|
|
Major Member
![]() 加入日期: Aug 2005
文章: 237
|
小弟是初學者
麻煩高手教一下,謝謝 ![]() |
||
|
|
|
Major Member
![]() 加入日期: Apr 2005 您的住址: Taipei
文章: 214
|
select A.流水號,A.產品代號,A.數量,
(CASE A.單位 WHEN 1 THEN A.數量*B.一箱單價 WHEN 2 THEN A.數量*B.一盒單價 END) AS 金額 from 訂單資料表 A LEFT JOIN 產品資料表 B ON A.產品代號=B.產品代號 |
|
|
|
Regular Member
![]() ![]() 加入日期: Feb 2002
文章: 51
|
先從圖三這個表格來看,失去了 '一盒' 或 '一箱' 的
資訊,看起來就會像是 A01 這個產品有時候賣 500 有 時候賣 100,所以我會覺得這個 table 設計上就有點達 不到 business 上的需求 如果單純只是從技術面解決您的問題的話,我會在 圖一 的表格中加上一個單位的欄位,也就是一個產品代號會因 單位的不同而會有不同的價格,當然這個表格中原有的一 箱單價或一盒單價也就不需要了,只留一個單價欄位就可 以了 由於圖一表格修改了的關係,圖二表格中也要加上一個單 位的欄位,來表示購買者買的是一箱的 A01 或一盒的A01 如此一來圖三的結果就可以用 >> SQL ANSI 92 的寫法: SELECT 流水號, 產品代號, 圖二.單位, 數量*單價 FROM 圖一 INNER JOIN 圖二 ON 圖一.產品代號 = 圖二.產品代號 AND 圖一.單位 = 圖二.單位 >> SQL ANSI 89 (or 85?) 的寫法: SELECT 流水號, 產品代號, 圖二.單位, 數量*單價 FROM 圖一 , 圖二 WHERE 圖一.產品代號 = 圖二.產品代號 AND 圖一.單位 = 圖二.單位 有些狀況要嘗試著從不同角度切入去看問題,光從技術面 的其中一環(eg. SQL) 甚至只從技術面切入去看問題都會 有所不足 例如,如果這個案例是實際商業上的應用的話,還可能會 複雜很多,像是一箱的價格可能是沒有所謂的單價的,可 能是另外以折扣的方式來處理,期末時這些折扣的費用又 要另行列出之類的... 這時候也許有要多出個折扣表之類 的... 此文章於 2006-07-05 10:18 AM 被 jhc 編輯. |
|
|
|
Major Member
![]() 加入日期: Aug 2005
文章: 237
|
引用:
謝謝 問題解決了 ![]() |
|
|
|
|
Major Member
![]() 加入日期: Aug 2005
文章: 237
|
引用:
謝謝你詳細的說明。 ![]() |
|
|
|