2011-08-18 134 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。