方法二比方法一來得好唷~~!!!
版版貼心提醒..
方法一
SELECT
[MPRODUCT_ID]
,[MPRODUCT_NAME]
,[MPRODUCT_CONTENT]
,[MPRODUCT_PRICE]
,DBO.UFU_GETMSALE_STOCK(MPRODUCT_ID, NULL) AS MPRODUCT_STOCK
,[MPRODUCT_PHOTO]
,[MPRODUCT_CATE]
,[MPRODUCT_STATUS]
FROM [KSISALDB].[DBO].[MPRODUCT]
WHERE [MPRODUCT_CATE] = 1
AND [MPRODUCT_STATUS] ='00'
AND CONVERT(INT,DBO.UFU_GETMSALE_STOCK(MPRODUCT_ID, NULL)) >0
可以看到第六行被呼叫的預存程序,
有個MPRODUCT_STOCK名稱欄位
現在要從[DBO].[MPRODUCT]裡面的資料表
篩選出[MPRODUCT_STATUS] ='00' (商品狀態為00)
及MPRODUCT_STOCK > 0 (庫存量大於零的)
以上做法是使用CONVER
將預存程序轉成INT 數值
去比較大於零的庫存數量
這樣的作法效率較為差
方法二 ★★ <=重點打星星喔~!
SELECT
M.MPRODUCT_ID
,M.MPRODUCT_NAME
,M.MPRODUCT_CONTENT
,M.MPRODUCT_PRICE
,S.MPRODUCT_STOCK
,M.MPRODUCT_PHOTO
,M.MPRODUCT_CATE
,M.MPRODUCT_STATUS
FROM MPRODUCT M
LEFT JOIN (SELECT
MPRODUCT_ID
,DBO.UFU_GETMSALE_STOCK(MPRODUCT_ID, NULL) AS MPRODUCT_STOCK
FROM MPRODUCT) S
ON S.MPRODUCT_ID = M.MPRODUCT_ID
WHERE M.MPRODUCT_CATE = 2
AND M.MPRODUCT_STATUS = '00'
AND S.MPRODUCT_STOCK > 0
是直接從預存程序的
資料表撈出MPRODUCT_STOCK
這樣可以更有效率開取這網頁
不用再轉換INT的步驟
P.S
今天學到很棒的SQL指令
謝謝指導員耐心的教導
前端工程師雖然要著重網頁美化
但也要了解介接的流程
以及更有效率的撈資料方式唷~!