SQL возвращает значение по умолчанию для соединения, где атрибуты не существуют - PullRequest
1 голос
/ 02 апреля 2012

У меня проблема с SQL-оператором.Моя БД - MySQL 5.1.

У меня есть 2 таблицы:

day_table 
date(pk)    note    ...
------- -----   ---
2012-03-29  foo ...
2012-03-30  bar ...
2012-03-31  foobar  ...

other_table
id  fk_date     key     value
--  -------     ---     -----
1   2012-03-29  foo     5
2   2012-03-30  bar     9
3   2012-03-30  foo     4
4   2012-03-31  bar     6
5   2012-03-31  foo     1

Поэтому мне нужен запрос примерно такой:

SELECT o.value, d.date FROM other_table o join day_table d on (...) where key = "bar" group by d.date;

И мне нужен результат, подобныйthis:

result_table
date(pk)    value 
------- -----
2012-03-29  0 (or null) <---- THIS IS IMPORTANT!!!
2012-03-30  9       
2012-03-31  6

Я знаю, что проблема в соединении, но мне нужно получать каждую дату в day_table.

Возможно ли это с (My) SQL?

С наилучшими пожеланиями

Ответы [ 2 ]

3 голосов
/ 02 апреля 2012

использовать левое соединение вместо внутреннего соединения:

SELECT o.value, d.date FROM day_table o left join other_table d on o.date=d.date and key = "bar" group by d.date;
3 голосов
/ 02 апреля 2012

Вы имеете в виду, что хотите включить строки, где other_table не объединяется day_table? Используйте LEFT JOIN вместо обычного JOIN.

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