2011-08-18 91 views
0

我又來了另一個問題/問題。我知道這個主題的標題可能和其他人一樣,但我注意到他們還有其他問題。SQL LEFT JOIN問題 - 錯誤結果

我有一個SQL LEFT JOIN的問題。我正在使用MySQL。

我想要一個表格,其中TYPES將會持續六個月並計算一個月(這可能看起來很奇怪,但我需要它來達到某種目的)。

我有兩個查詢(我會顯示查詢和輸出,它會更具體)。

首先查詢六個月:

SELECT objectsoort AS types, COUNT(objectsoort) AS total, prijs AS price, SUM(prijs)/ SUM(oppervlakte) AS meters 
FROM `huislijn` 
WHERE <clause statements> 
GROUP BY objectsoort 

而且我得到結果是這樣的:

Six_months http://i56.tinypic.com/14ag1zs.png

第二個查詢是一個月:

SELECT objectsoort AS types1, COUNT(objectsoort) AS total1, AVG(prijs) AS price1, SUM(prijs)/ SUM(oppervlakte) AS meters1 
FROM `huislijn` 
WHERE <clause statements> 
GROUP BY objectsoort 

然後我得到如下結果:

One month http://i53.tinypic.com/i20haa.png

我想讓他們爲一體,使我使用LEFT JOIN並獲得查詢這樣的:

SELECT a.types1, b.total1, b.price1, b.meters1 
FROM (SELECT objectsoort AS types1 
FROM `huislijn` 
WHERE <clause statements>) a 
LEFT JOIN 
(SELECT objectsoort AS types12, COUNT(objectsoort) AS total1, AVG(prijs) AS price1, SUM(prijs)/SUM(oppervlakte) AS meters1 
FROM `huislijn` 
WHERE <clause statements>) b 
ON a.types1 = b.types12 
GROUP BY types1 

但結果不是我所期望的,因爲應該有接近「公寓」的一些結果和「woning」的結果是不一樣的查詢一個月:

both in one http://i54.tinypic.com/20qcj8w.png

我再說一遍,這將是更清楚:我想類型的6個蒙的hs和一個月的計算。在這種情況下,這意味着結果應該接近'appartement'和'woning'。

所以,我想知道,也許我做錯了什麼。

感謝您的幫助和支持。

+0

OMG。我發現問題在哪裏。謝謝! 現在都很好。 ;) – Gereby

+0

我的意思是在第三個查詢中,對不起。連接表查詢與您的第二個查詢(缺少group by子句)不同。 – Jacob

+1

請與我們分享您的問題+解決方案。如果合適,回答你自己的問題並接受答案。 :) –

回答

1

好吧,我被要求分享的解決方案,所以在這裏它是:

由於cularis說,我錯過了一些地方GROUP BY objectsoort。有工作查詢(我已經改變了一點,因爲工作就可以了,但結果還是一樣):

SELECT a.types5, b.total5, b.price5, b.meters5, a.total, a.price, a.meters 
FROM (
SELECT objectsoort AS types5, COUNT(objectsoort) AS total, prijs AS price, SUM(prijs)/SUM(oppervlakte) AS meters 
FROM `huislijn` 
WHERE <clause statements> 
GROUP BY objectsoort) a 
LEFT JOIN (
SELECT objectsoort AS types15, COUNT(objectsoort) AS total5, AVG(prijs) AS price5, SUM(prijs)/SUM(oppervlakte) AS meters5 
FROM `huislijn` 
WHERE <clause statements> 
GROUP BY objectsoort) b 
ON a.types5 = b.types15 
GROUP BY types5 

結果:

result http://i51.tinypic.com/1z5onxy.png

感謝cularis ! OMG。