Я постараюсь дать это как можно больше, так как это можно использовать повторно.MySQL: Инициализировать сводную таблицу с заполнителями для несуществующих данных
Я запустил сайт с довольно большой базой данных MySQL, которая выросла, чтобы инициализировать несколько сводных/накопительных таблиц. Для примера, скажем, это статистика футбола. Поскольку я обрабатываю несколько футбольных лиг в одной и той же базе данных, многие из них играют в игры разной длины - например, крытые футбольные лиги играют четыре четверти, в то время как большинство наружных лиг играют половинки.
У меня есть три таблицы, важные для этого упражнения. Я отредактировал все поля, которые я не считаю значимыми для ответа, который я ищу.
GAME
`game`.id
`game`.home_team_id
`game`.away_team_id
`game`.number_of_periods
GOAL
// Records for each goal scored in the game
`goal`.id
`goal`.game_id
`goal`.team_id
`goal`.period_number
`goal`.player_id
`goal`.assist_player_id
PERIOD_SUMMARY
`period`.id
`period`.game_id
`period`.team_id
`period`.number
`period`.goals_scored
В конце концов, я должен иметь записи для каждого периода играл в сводном период таблицы, независимо от того, был ли или не был забит гол. Эту таблицу нужно только инициализировать один раз, так как довольно легко добавить нулевые заполненные записи с помощью триггера при создании игры и запускать запросы на вставку/обновление для обновления таблицы period_summary.
Для меня также довольно легко сгруппировать все цели и инициализировать таблицу сводки периода с помощью SUM(), что у меня есть небольшая проблема, излагая эффективный способ «заполнить» любые периоды, которые «т есть гол, забитый с 0.
то, что я пытаюсь выяснить, если это проще/эффективнее:
- Написать триггер и предварительного заполнения всей period_summary таблицы с 0 заполненных значений , затем запустите запрос, который я уже знаю, чтобы обновить соответствующие записи за периоды, в которые были забиты голы.
- Используйте какой-либо другой метод (возможно, временную хранимую процедуру?), Которая будет только 0-заполнять записи, если в таблице целей нет соответствия.
Извините, мое описание, возможно, было путаным в моем первоначальном вопросе. Обратите внимание, что сводная таблица еще не существует, и основной целью этого упражнения является инициализация этой таблицы данными. Мне нужно создать записи «0» для всех периодов, играемых в игре (в прошлом), где не было забито ни одного гола. – AvatarKava
Да, на мой взгляд, вам не нужно «инициализировать»; просто добавьте записи, когда у вас есть данные после того, как период был воспроизведен. – tpdi
Говоря, что я имел в виду заполнить таблицу данными из игр, которые уже были сыграны. – AvatarKava