автозаполнение в SELECT - PullRequest
1 голос
/ 05 мая 2020

поэтому я делаю вывод отчета, поэтому я пытаюсь подключить 2 таблицы table 1:

+-------+------------+-------+
| House | HouseName  | Price |
+-------+------------+-------+
| A     | KAI        |    50 |
| B     | MAI        |    40 |
| C     | DAI        |    30 |
+-------+------------+-------+

table 2:

+-------+-------+------+
| House | Month | Days |
+-------+-------+------+
| A     | April |    5 |
| B     | April |    5 |
| A     | April |   20 |
| A     | May   |    5 |
+-------+-------+------+

таблица, которую я хочу (выбран по месяцу):

+-------------------------+------------+
| House(as in house name) | Total Days |
+-------------------------+------------+
| KAI                     |         25 |
| MAI                     |          5 |
| DAI                     |          0 |
+-------------------------+------------+

Я получаю (Месяц = ​​'Апрель'):

+-------------------------+------------+
| House(as in house name) | Total Days |
+-------------------------+------------+
| KAI                     |         25 |
| MAI                     |          5 |
+-------------------------+------------+

Это мой код:

SELECT SUM(table2.Days) as Total Days, table1.HouseName as House
FROM table 2 INNER JOIN
     table 1
     ON table2.House = table1.House
WHERE table2.Month = 'April' GROUP BY table1.HouseName

Я все еще не могу получить результат Я хотел, чтобы кто-нибудь помог мне

1 Ответ

0 голосов
/ 05 мая 2020

Вы почти у цели. Вам просто нужно превратить ваш inner join в left join и, соответственно, переместить условие в таблице left join ed в предложение on соединения:

select t1.housename, coalesce(sum(t2.days), 0) total_days
from table1 t1
left join table2 t2 
    on t2.hourse = t1.house
    and t2.month = 'April'
group by t1.house, t1.housename

Обратите внимание, что я также добавлено t1.house в предложение group by - в случае, если два разных дома имеют одно и то же имя, вы, вероятно, захотите посчитать их отдельно.

...