Проблема SQL LEFT JOIN - неверный результат - PullRequest
0 голосов
/ 18 августа 2011

Я снова здесь с другим вопросом / проблемой.Я знаю, что заголовок этой темы может быть похож на некоторые другие здесь, но я заметил, что у них были другие проблемы с этим.

У меня проблема с 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

Тогда я получаю такой результат:

Один месяц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

НО результат не тот, который я ожидал, потому что долженбыть некоторый результат около 'appartement' и 'выигрышных' результатов не совпадает с запросом за один месяц:

и в одном http://i54.tinypic.com/20qcj8w.png

Я повторяю, что это было бы более ясноЯ хочу типы шести месяцев и расчеты за один месяц.В данном случае это означает, что результаты должны быть близки к «аппартаментам» и «выигрышам».

Итак, я хотел знать, может, я что-то не так делаю.

Спасибо за вашу помощь иподдержка.

1 Ответ

1 голос
/ 19 августа 2011

Хорошо, меня попросили поделиться решением, поэтому вот оно:

Как сказал 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

Результат:

результат http://i51.tinypic.com/1z5onxy.png

Спасибо за Cularis !

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...