Как группировать первичные ключи с другим значением, но с одинаковым именем и с использованием datediff - PullRequest
0 голосов
/ 24 июня 2019

Итак, у меня есть три таблицы:

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

Бронирование:

pID              |begindate    | enddate     |   
------------------------------------------------------
COD12            | 2014-07-15  | 2014-07-18  |
COD400           | 2014-07-20  | 2014-07-21  |
KOD12            | 2014-07-01  | 2014-07-07  |

Люкс стол:


pID              |city         |    
---------------------------------
COD12            | Corona      | 
COD400           | Corona      | 
KOD12            | Kentucky    | 

Small room table:

pID              |city         |    
---------------------------------
COD600           | Corona      |
MOD10            | Madrid      |
KOD20            | Kentucky    | 

Что я хочу: Количество дней, проведенных от гостяв люксах обратите внимание, что в Corona есть две комнаты:

city             |amountofdays |    
---------------------------------
Corona           | 4           |
Kentucky         | 6           |


Что я пытался сделать:

SELECT datediff(reservation.enddate,reservation.begindate) as amountofdays, luxeroom.city FROM reservation
INNER JOIN luxeroom ON reservation.pID = luxeroom.pID
GROUP BY luxeroom.pID, luxeroom.city; 

this resulted in:

city             |amountofdays |    
---------------------------------
Corona           | 3           |
Corona           | 1           |
Kentucky         | 6           |

Ответы [ 2 ]

1 голос
/ 24 июня 2019

Вам нужно сгруппировать по сумме

SELECT sum(datediff(a.enddate, a.begindate)) as amountofdays, b.city
FROM reservation a 
JOIN luxeroom b  ON a.pID = b.pID
GROUP BY b.city; 
1 голос
/ 24 июня 2019

Исправить group by:

SELECT sum(datediff(r.enddate, r.begindate)) as amountofdays, l.city
FROM reservation r JOIN
     luxeroom l
     ON r.pID = l.pID
GROUP BY l.city; 

Вы хотите одну комнату на город, поэтому GROUP BY должно включать только city.

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