Найти имя таблицы, в которой находится значение? Mysql Stack Overflow

у меня есть 3 таблицы, tfQuestions, oeQuestions, MultQuetsions, у меня есть конкретный вопрос, и я хочу посмотреть, в какой таблице он находится. Есть ли какой-то конкретный запрос, который я могу использовать для этого? Если нет, я могу искать, если еще как:

if

SELECT question From tfquestion WHERE question = $question  { if true do this}

else if

SELECT question From oequestion WHERE question = $question  { if true do this}

else if

SELECT question From multquestion WHERE question = $question  { if true do this}

1

Решение

Чтобы узнать, из какой таблицы возник вопрос, вы можете просто выбрать буквенную идентификационную строку для каждого запроса:

 SELECT 'tf' AS tbl_name, question FROM tfquestions

Затем объедините три таблицы в UNION и запрос внешнего драйвера:

SELECT tbl_name, question
FROM (
SELECT 'tf' AS tbl_name, question FROM tfquestions
UNION ALL
SELECT 'oe' AS tbl_name, question FROM oequestions
UNION ALL
SELECT 'mult' AS tbl_name, question FROM multquestions
)
WHERE question = :question

Таким образом, вам практически нужен только один запрос к базе данных, но получите соответствующий вопрос и имя исходной таблицы для него.

Но подумайте, что сказал @ rurouni88; может иметь смысл реструктурировать схему вашей базы данных, если таблицы имеют одинаковую структуру. По крайней мере, вы могли бы создать VIEW на ваших столах, используя подход UNION.

1

Другие решения

Других решений пока нет …

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector