По сути, у меня есть некоторые пользовательские метаданные для отдельных элементов. Метаданные состоят из заголовка и соответствующего значения. Один элемент может иметь один конкретный заголовок метаданных, а другой - нет. Поэтому создание нового столбца в моей основной таблице кажется неправильным подходом, поскольку я не хочу, чтобы у каждого элемента были одинаковые заголовки метаданных.
Проблема в том, что я хочу отсортировать по этим метаданным. Я могу легко сгенерировать таблицу, в которой метаданные выглядят как просто еще один столбец, но я хочу отсортировать по ним. Итак, чтобы проиллюстрировать, что у меня есть:
Скажите, у меня есть следующие таблицы:
Items Table:
id | color
----------
0 | red
1 | pink
2 | orange
MetaData Table
itemId | title | data
-----------------------------------------
0 shape round
1 | shape | square
0 | sound | LOUD!
Я могу легко написать SQL и код для генерации чего-то подобного следующему из этих таблиц:
id | color | shape | sound
--------------------------------------------
0 | red | round | LOUD!
1 | pink | square |
2 | orange | |
Итак, при генерации, если у элемента нет заголовка метаданных, который я отображаю, он просто остается пустым. Я бы хотел, чтобы пользователь мог сортировать по форме или звуку, а внизу показывать только те, которые пустые.
Я мог бы ввести все данные, сгенерировать таблицы, затем отсортировать их в коде ... но ... это было бы нецелесообразно для сотен записей, с которыми мне, возможно, понадобилось бы работать.
Возможно ли это сделать в SQL (я использую mysql, но что-то более общее было бы лучше, если бы я это изменил)? Является ли мой макет таблицы просто непрактичным для этого / я должен сделать это по-другому (я бы предпочел не менять мой макет таблицы).
Спасибо!