фонасделать значение INHERIT SQL записей из одной или нескольких записей в одной таблице
У меня есть таблица MySQL, для которой каждая запись представляет собой Region- и/или конкретную платформу версию элемента. Для любого данного элемента будет несколько версий; нет первичного ключа и в основном индексированных столбцов.
Я начинаю с записей по всему миру, по одному для каждой версии платформы. Затем я добавляю записи для любых значений, специфичных для региона, а затем добавляю записи для любых значений для конкретной страны. Дело в том, что я только планирую добавлять ценности, которые уникальны для этого региона или страны; другими словами, все записи будут иметь нулевые значения, потому что я не хочу вводить повторяющиеся значения, поэтому я хочу, чтобы записи наследовали значения из других записей.
item | platform | region | country | date | price | [...]
1 | 1 | [WW] | null | 2013-04-01 | 100 |
1 | 2 | [WW] | null | 2013-04-01 | 100 |
1 | null | [EU] | null | 2013-04-20 | 80 |
1 | null | [UK] | null | null | 70 |
Я планирую использовать PHP для отображения соответствующих записей для данной страны. Дело в том, что я хочу иметь возможность совмещать/унаследовать ценности из региона и записи по всему миру. Таким образом, у Великобритании будет две общей записи: каждая из них наследует значение platform
от записи [WW]
, наследуя значение date
от [EU]
, и оба имеют значение price
из записи [UK]
.
1 | 1 | [UK] | 2013-04-20 | 70
1 | 2 | [UK] | 2013-04-20 | 70
Вопрос, который я хочу знать, есть решение/процедура/метод выполнения этого только в MySQL? Или это единственный способ сделать это через PHP-кодирование?
Уточнение: я думаю, нам нужна фиксированная логика здесь, так вы пытаетесь это сделать? Выберите строки с нулевым значением как платформу и null в качестве даты, присоедините их к одному элементу # с ненулевой платформой, получите платформу. Затем присоедините это значение с нулевым значением как платформу и не null в качестве даты, введите дату. Если это так, то это легко выполнимо, но вам будет лучше с несколькими таблицами. –
Здесь больше столбцов, чем показано; это не просто получение тех, которые я показал. В любом случае, должны ли я иметь отдельные «доступность платформы», «глобальные», «региональные» и «национальные» таблицы? –
Это все равно будет зависеть от вашей логики. Некоторые вопросы, которые нужно задать: Какова ваша логика, которая говорит программе показывать (1 | 1 | UK, 1 | 2 | UK), а не (1 | 1 | EU, 1 | 2, EU)? Было бы проще, если бы у вас была «WW-таблица» в качестве прототипа и реальной таблицы «предметов», или вам нужно собрать их вместе, потому что вы планируете связывать элементы через произвольное количество «родительских» элементов (UK -> EU -> WW, или AU -> WW, или Chicago -> IL -> US -> WW), и в этом случае вам понадобится дополнительное поле с именем «parent_item_id» в той же таблице. –