MySQL присоединиться к вопросу - PullRequest
0 голосов
/ 27 июля 2011

Это, наверное, действительно легко, но у меня проблемы с этим. Ранее я задавал вопрос ( MySql Query help ) о запросе, и ответ заключался в том, чтобы создать другую таблицу и объединить ее с моим текущим запросом. Поэтому я создаю временную таблицу и объединяю ее с моим запросом, но получаю те же результаты.

Обзор: У меня есть таблицы дат с датами за последние 30 дней и значением 0 для каждой записи

+------+------------+
| Zero | Date       |
+------+------------+
|    0 | 2011-07-27 |
|    0 | 2011-07-26 |
|    0 | 2011-07-25 |
|    0 | 2011-07-24 |
|    0 | 2011-07-23 |
|    0 | 2011-07-22 |
...etc

И я пытаюсь объединить эту таблицу с запросом, я делаю другую таблицу, которая получает эти результаты:

+-------------------+-----------+
| Past-Month-Builds | Month-Day |
+-------------------+-----------+
|                53 | 6-27      |
|               103 | 6-28      |
|                91 | 6-29      |
|                70 | 6-30      |
|                76 | 7-1       |
|                 8 | 7-2       |
|                77 | 7-5       |
|               111 | 7-6       |
|                67 | 7-7       |
|                70 | 7-8       |
|                 2 | 7-9       |
|                 3 | 7-10      |
|                87 | 7-11      |
|                53 | 7-12      |
|                49 | 7-13      |
|                84 | 7-14      |
|               126 | 7-15      |
|                 3 | 7-16      |
|                 8 | 7-17      |
|                98 | 7-18      |
|               114 | 7-19      |
|               841 | 7-20      |
|               206 | 7-21      |
|               738 | 7-22      |
|                 2 | 7-23      |
|                65 | 7-25      |
|                39 | 7-26      |
|                21 | 7-27      |
+-------------------+-----------+

Обратите внимание, что пропущены дни, я хотел бы, чтобы столбец Past-Month-Builds отображал 0, когда в этот день не было никаких сборок.

Вот запрос, который я пытаюсь использовать:

SELECT
    COUNT(id) AS 'Past-Month-Builds',
    CONCAT(MONTH(builds.submittime), '-', DAY(builds.submittime)) as 'Month-Day'
FROM builds
    RIGHT JOIN dates ON DATE(builds.submittime) = dates.Date
WHERE DATE(builds.submittime) >= DATE_SUB(CURDATE(), INTERVAL 30 day)
GROUP BY MONTH(submittime), DAY(submittime);

Какая-то потеряна, любая помощь будет отличной Спасибо.

1 Ответ

1 голос
/ 27 июля 2011

Измените запрос, чтобы dates была первичной таблицей, и используйте left outer join для таблицы builds.

Кроме того, переместите все критерии, связанные с таблицей сборок, из предложения WHEREпредложение ON, поскольку это необязательная таблица.

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