У меня есть таблица данных, и я разрешаю людям добавлять метаданные в эту таблицу.Какой SQL-запрос или представление покажут «динамические столбцы»
Я даю им интерфейс, который позволяет им обрабатывать его, как если бы они добавляли дополнительные столбцы в таблицу, в которой хранятся их данные, но я фактически храню данные в другой таблице.
Data Table
DataID
Data
Meta Table
DataID
MetaName
MetaData
Так что, если они хотели таблицу, хранящиеся данные, дату и название, то я бы данные в таблице данных, и слово «Дата» в metaname и дату в MetaData и другую строку в мета-таблице с именем «Имя» в метанаиме и имя в метаданных.
Теперь мне нужен запрос, который берет информацию из этих таблиц и представляет ее как бы исходящую из одной таблицы с двумя дополнительными столбцами «Данные» и «Имя», поэтому клиенту будет выглядеть как одна таблица с их пользовательских столбцов:
MyTable
Data
Date
Name
Или, другими словами, как я иду отсюда:
Data Table
DataID Data
1 Testing!
2 Hello, World!
Meta Table
DataID MetaName MetaData
1 Date 20081020
1 Name adavis
2 Date 20081019
2 Name mdavis
Чтобы здесь:
MyTable
Data Date Name
Testing! 20081020 adavis
Hello, World! 20081019 mdavis
Несколько лет назад, когда я делал это в MySQL с помощью PHP, я сделал два запроса, первый - для получения дополнительных метаданных, второй - для их объединения. Я надеюсь, что у современных баз данных есть альтернативные методы борьбы с этим.
Связано с вариантом 3 this question.
-Adam
Так что это вариант два запроса, где я сначала выяснить, какие «динамические» столбцы Мне нужно зайти из мета-таблицы, а затем построить запрос из этих результатов? – 2008-10-20 19:41:26
Да, однако, вы можете сделать это динамически в одном сохраненном proc. Если ваши MetaNames исправлены, вы можете использовать запрос выше, как есть, но в противном случае он будет динамическим. Я скоро отправлю код, который быстро. – 2008-10-20 19:44:37