Итак, у меня есть база данных MySQL, которая отслеживает события в календаре. У меня есть таблица с названием календарь, в которой есть все даты, которые меня интересуют. На моей работе у нас есть контракты, которые имеют определенные ценности; для упрощения мы будем использовать только 1 и 2. Эти контракты имеют дату начала и дату окончания. Я хочу взять все контракты на весь календарь и добавить значения контрактов за каждый день.Как суммировать строки после подкачки?
До сих пор у меня есть:
SELECT calendar.datefield AS DATE, contract.time_slots AS Slots_taken
FROM contract
RIGHT JOIN calendar ON calendar.datefield
BETWEEN contract.start_time
AND contract.end_time
LIMIT 600 , 30
Это почти дает мне то, что я хочу. Этот запрос создает таблицы типа:
DATE | Slots_taken
------------|--------------
2013-08-29 | 1
2013-08-30 | 1
2013-08-31 | 1
2013-09-01 | 1
2013-09-01 | 2
2013-09-02 | 1
2013-09-02 | 2
2013-09-03 | 1
2013-09-03 | 2
Но здесь я получаю повторяющиеся даты. Я хочу только одну строку на дату с суммой значений для этой даты. Так оно и должно быть:
DATE | Slots_taken
------------|--------------
2013-08-29 | 1
2013-08-30 | 1
2013-08-31 | 1
2013-09-01 | 3
2013-09-02 | 3
2013-09-03 | 3
LIMIT без ORDER BY (или, возможно, GROUP BY) справедливо бессмысленны. Заметим также, что, хотя поиск термина «LEFT JOIN» на SO возвращает приблизительно 46 237 результатов, «ПРАВОЕ СОЕДИНЕНИЕ» входит в desultore 2,116. Вы можете подумать, что в следующий раз вы структурируете свой запрос, чтобы использовать тот или иной. ;-) – Strawberry