看板 Database 關於我們 聯絡資訊
※ 引述《donkeychen (Bad_To_The_Bone)》之銘言: : table SPJ(SNO,PNO,JNO,QTY) : table S(SNO,SNAME) : SNO PNO JNO QTY : --------------- : S1 P2 J1 400 : S2 P2 J1 300 : S2 P2 J2 300 : SNO SNAME : --------------- : S1 Peter : S2 John : 上面兩個Table : 我取我有問題的部分請教 : S為供貨商 : P為產品 : J為計畫 : 如要查詢供給P2產品最多供應商的名稱 : 由上面資料可以知道應該是S2 John供應了600為最多 : 請問這樣該如何達成呢 : 我想大概是用巢狀SELECT : 但是好像怪怪的 : ------------------ : 我用了access試 : SELECT MAX(TOTAL) as MAX_P2 : FROM( : SELECT SUM(QTY) AS TOTAL : FROM SPJ : WHERE PNO='P2' : GROUP BY SNO : ) : ; : 可以得到 : MAX_P2 : ------ : 600 : ------------------ : 但是因為要串接SNAME與S表格的關係 : 我試了 : SELECT SNO,MAX(TOTAL) as MAX_P2 : FROM( : SELECT SNO,SUM(QTY) AS TOTAL : FROM SPJ : WHERE PNO='P2' : GROUP BY SNO : ) : ; : 會顯示不知道SNO是什麼 如果是SQL Server 解決錯誤訊息應該是你的FROM 子查詢table設個別名就可以了 : SELECT M.SNO,MAX(M.TOTAL) as MAX_P2 : FROM( : SELECT SNO,SUM(QTY) AS TOTAL : FROM SPJ : WHERE PNO='P2' : GROUP BY SNO : ) M : SELECT G_SNO,MAX(TOTAL) as MAX_P2 : FROM( : SELECT SNO AS G_SNO,SUM(QTY) AS TOTAL : FROM SPJ : WHERE PNO='P2' : GROUP BY SNO : ) : ; : 一樣不能 : 目標是 : SELECT SNAME : FROM S : WHERE SNO IN ( : SELECT SNO : FROM( : 一個有已經查到MAX(SUM(QTY)) : ) : ); : 在用SNO串的地方卡住了 : 思維不清晰還請大家幫忙 : 感謝大家 只抓第一筆 SELECT S.SNAME,SPJ.PNO,SUM(SPJ.QTY) FROM S,SPJ WHERE S.SNO=SPJ.SNO AND SPJ.PNO='P2' GROUP BY S.SNAME,SPJ.PNO ORDER BY 3 DESC or SELECT S.SNAME,SPJ.PNO,SUM(SPJ.QTY) TOTAL INTO AAA FROM S,SPJ WHERE S.SNO=SPJ.SNO AND SPJ.PNO='P2' GROUP BY S.SNAME,SPJ.PNO SELECT SNAME,PNO,TOTAL FROM AAA WHEER TOTAL=(SELECT MAX(TOTAL) FROM AAA) -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 122.116.128.36