2013-05-06 38 views
0

我有這兩個查詢,我需要作出一個單一的查詢。 Keyfield1和TPOLNO應該是連接字段。我將如何去做這個單一的查詢?如何使用內部聯接使這兩個查詢成爲單個查詢?

SELECT TPOLNO, SUM(TTSAMT) AS SUM FROM PFPOSTR410 WHERE 
((TTRNYY=2012 AND TTRNMM=3 AND TTRNDD>=27) OR (TTRNYY=2012 AND TTRNMM>3) OR 
(TTRNYY=2013 AND TTRNMM<=2) OR (TTRNYY=2013 AND TTRNMM=3 AND TTRNDD<=27)) 
GROUP BY TPOLNO HAVING SUM(TTSAMT)>=5000 ORDER BY TPOLNO ASC 

SELECT KEYFIELD1, KEYFROBJ FROM CMRELATN WHERE RELROLETC=8 

預先感謝任何方向!

  • 喬希
+6

「始終代碼,如果誰最終維護你的傢伙代碼將是一個暴力的精神病患者,他知道你住在哪裏。「 – 2013-05-06 14:11:35

+0

我會盡力記住! – gtsouk 2013-05-06 14:15:03

+0

@Denis - 我在一段時間內得到的最好建議... – ResourceReaper 2013-05-06 14:38:28

回答

-1

如果我理解你的問題,你需要做一個簡單的內加入2個表:

SELECT TPOLNO, SUM(TTSAMT) AS SUM, KEYFIELD1, KEYFROBJ 
FROM PFPOSTR410, CMRELATN 
WHERE 
    ((TTRNYY=2012 AND TTRNMM=3 AND TTRNDD>=27) OR (TTRNYY=2012 AND TTRNMM>3) OR 
(TTRNYY=2013 AND TTRNMM<=2) OR (TTRNYY=2013 AND TTRNMM=3 AND TTRNDD<=27)) 
    AND KEYFIELD1=TPOLNO 
    AND RELROLETC=8 
GROUP BY TPOLNO, KEYFIELD1, KEYFROBJ 
HAVING SUM(TTSAMT)>=5000 
ORDER BY TPOLNO ASC 
+0

是這是我所需要的非常多。我編輯了語句以從select子句中刪除KEYFIELD1並將其添加到group by子句中。奇蹟般有效!謝謝! – ResourceReaper 2013-05-06 14:41:08

+0

永遠不要使用隱式連接來獲取它們,它們是一個SQL反模式。 – HLGEM 2013-05-06 15:09:32

+0

由shoudl組成的組總是包含所有非聚合字段,即使mysql允許你做這樣的錯誤事情。一般來說,這是使用兩種SQL反模式技術的非常差的答案。我們不應該教會錯誤的做事方式。 – HLGEM 2013-05-06 15:12:13