У меня есть база данных MySql с таблицами innoDB.Очень упрощенно это выглядит как две таблицы:
Таблица A:
- controlID (PK)
- controlText
Таблица B:
- controlOptionID (pk)
- controlID (от FK до таблицы A)
- controlOptionType
- controlOptionValue
Так много controlOptions (таблица B) могут ссылаться на один элемент управления (давая этому элементу управления несколько опций).Но для каждой опции в таблице B сделаны две строки: одна строка с controlOptionType = "linkToCreator" и controlOptionValue = (идентификатор шаблона, из которого она была сделана *).А другая строка type = "optionSelected" и value = "true" (или false).
- = это довольно сложная настройка, но в основном вместо заданных столбцов мы делаем динамическиес помощью типа, который был бы назван столбец.Поэтому я не могу связать шаблон с FK.
Так что теперь мне нужно выбрать каждый элемент управления (который будет иметь 2 controlOptions, связывающихся с ним), где одно значение controlOptionValue равно true или false (в зависимости от того, что мне нужно), а другой controlOptionValue - это текстовый идентификатор, который я указываю.
Что я думаю, лучший способ сделать это -
SELECT * FROM tableB WHERE controlOptionType = 'linkToCreator'
Затем выполните циклэтот набор результатов гласит:
SELECT * FROM tableB WHERE tableB.controlID = (the controlID in this iterations row) AND tableB.controlValue = 'true'
Но, возможно, это действительно неэффективно, и в любом случае я понятия не имею, как это сделать.Было бы здорово, если бы я мог получить один запрос (т.е. не используя хранимые процедуры), в котором я указал templateID и true или false, и он дал бы мне результат строки, если он ничего не нашел.
Кстати, этодля поиска в нашем приложении с помощью TONS нужно пройти строки, поэтому производительность имеет первостепенное значение.И да, я знаю, что установка не самая лучшая ...
Спасибо: D