iT邦幫忙

0

PHP 執行SQL SERVER 語法結果為空白

程式要做的是把符合條件 MV008 後的 ACTMV.MV016值加總
然後再算出 ACTMV.MV009-ZITMV.MVSUM的結果
※ 有想過用子查詢寫,但一直失敗,只好改暫存處理
※ B段程式在PHP中正常呈現資料,所以不知是A段那邊影響到結果
※ A+B程式在SERVER SQL 中跑結果是正確的
※ KEY的對應 MN、MV 欄位碼數字沒有一致是正確的

/*A段*/
DROP TABLE ZITMV
SELECT MV001,MV002,MV003,MV004,MV005,MV006,SUM(MV016) AS MVSUM
INTO ZITMV
FROM ACTMV
WHERE MV008 <= '20220131'
GROUP BY MV001,MV002,MV003,MV004,MV005,MV006

/*B段*/
SELECT	MN001, MN003, MN015, MN006, MN010, MN012, MN013, MN014,MN009-ISNULL(MVSUM,0)AS MN009B
FROM	ACTMN LEFT JOIN
		ZITMV ON MN001 = MV001 AND MN002 = MV002 AND MN003 = MV003 AND 
        MN005 = MV004 AND MN006 = MV005 AND MN007 = MV006
看更多先前的討論...收起先前的討論...
fillano iT邦超人 1 級 ‧ 2022-01-20 17:03:28 檢舉
你不要只給sql,因為也可能是php端的問題,看看你php怎麼寫的。
jkpraaex iT邦新手 4 級 ‧ 2022-01-20 18:03:40 檢舉
已補上
你的 $result 這個變數哪來的?
jkpraaex iT邦新手 4 級 ‧ 2022-01-21 11:10:33 檢舉
前一個網頁過來的
jkpraaex iT邦新手 4 級 ‧ 2022-01-21 11:11:10 檢舉
網頁會輸入「20220131」,就會等於和一開始的SQL範例一樣~
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

1 個回答

1
kulu
iT邦新手 5 級 ‧ 2022-01-22 13:57:05
最佳解答

把A語句當成Table,與B語句JOIN起來試試。

是指下方B段的部份嗎?還是別的意思?
ACTMN LEFT JOIN
ZITMV ON MN001 = MV001 AND MN002 = MV002 AND MN003 = MV003 AND MN005 = >MV004 AND MN006 = MV005 AND MN007 = MV006

ACTMN LEFT JOIN(
    SELECT MV001,MV002,MV003,MV004,MV005,MV006,SUM(MV016) AS MVSUM
    -- INTO ZITMV 這就不用了
    FROM ACTMV
    WHERE MV008 <= '20220131'
    GROUP BY MV001,MV002,MV003,MV004,MV005,MV006
    ) x

想像一下, x 就是一張table表

jkpraaex iT邦新手 4 級 ‧ 2022-01-22 14:10:42 檢舉

感謝 kulu ,已經可以抓的到資料了~我也瞭解之前子查詢是那邊寫錯了~

我要發表回答

立即登入回答