我寫了幾個SQL查詢並對我的表執行它們。每個單獨的查詢工作。我一直在添加功能,直到我有一個非常難看的工作查詢。問題是每次我想使用它時都必須手動更改一個值。你能幫助自動而不是「手動」的查詢嗎?如何修改查詢以遍歷整個表格而不是單個頁面
我正在使用DB2。
下表顯示了客戶(cid)從1到3.'club'是圖書銷售商,'qnty'是客戶從每個'俱樂部'購買的圖書數量。全表有45個客戶。
下圖顯示了前3個用戶(cid = 1或cid = 2或cid = 3)的所有表格元素。我的所有查詢(一旦合併)的最終目的是找到每個'cid'具有最大'qnty'的單個'俱樂部'。因此對於'cid = 1','俱樂部'是'qnty'爲3的讀者文摘。對於'cid = 2','club'是YRB Gold,其中'qnty'是5.一直到cid 45達到。
爲了給你什麼,我在這裏做一個背景是我的疑問:
(查詢1起爲cid=1
點)
SELECT * FROM yrb_purchase WHERE cid=1
(查詢2 - 找到cid = 1的'qnty'最高的'俱樂部')
SELECT *
FROM
(SELECT club,
sum(qnty) AS t_qnty
FROM yrb_purchase
WHERE cid=1
GROUP BY club)results
ORDER BY t_qnty DESC
(查詢3 - 從上面的查詢相結合的紀錄,這是CID)
SELECT cid,
temp.club,
temp.t_qnty
FROM yrb_purchase AS p,
(SELECT *
FROM
(SELECT club,
sum(qnty) AS t_qnty
FROM yrb_purchase
WHERE cid=1
GROUP BY club)results
ORDER BY t_qnty DESC FETCH FIRST 1 ROWS ONLY) AS TEMP
WHERE p.cid=1
AND p.club=temp.club
(查詢4)確保有用於CID只有一條記錄= 1
SELECT cid,
temp.club,
temp.t_qnty
FROM yrb_purchase AS p,
(SELECT *
FROM
(SELECT club,
sum(qnty) AS t_qnty
FROM yrb_purchase
WHERE cid=1
GROUP BY club)results
ORDER BY t_qnty DESC FETCH FIRST 1 ROWS ONLY) AS TEMP
WHERE p.cid=1
AND p.club=temp.club FETCH FIRST ROWS ONLY
要讓客戶2獲得'qnty'最高的'club',我只需在上面的最後一個查詢中將文本cid = 1更改爲cid = 2。我的查詢似乎總是會產生正確的結果。我的問題是,如何修改我的查詢以獲得單個表中所有'cid's從1到45的結果?我該如何獲得一張包含所有cid值的表格以及出售cid最多書籍的俱樂部,以及在一個tablei內銷售了多少本書?請記住,我希望您可以修改我的查詢,而不是提供更好的查詢。
如果您認爲我的查詢太難看(我同意你)並選擇提供另一個查詢,請注意,我剛開始學習SQL,可能無法理解您的查詢。你應該知道我已經問過這個問題:For common elements, how to find the value based on two columns? SQL但我無法做出答案的工作(由於我的SQL限制 - 不是因爲答案不好);在沒有工作答案的情況下,我無法對其進行逆向工程,以瞭解它是如何工作的。 在此先感謝
****************************編輯#1 *********** ******************************** 答案的結果是:
請閱讀http://meta.stackoverflow.com/questions/285551/why-may-i-not-upload-images-of-code在此提問/ 285557和接受的答案 –