MySQL - выберите конкретные строки из нескольких таблиц - PullRequest
1 голос
/ 17 января 2011

У меня есть набор таблиц базы данных, названных как:

site_1_details
site_2_details
site_3_details
...
site_420_details

все таблицы имеют одинаковые поля, например:

ID  | SETTING | VALUE 
----------------------
1     name      Site 1 Name
2     desc      Site 1 Desc
3     email     Site 1 Email...
...

(отличаются только поля значений)

Как получить набор значений из определенных таблиц?

Например, я хочу получить значения имени и адреса электронной почты с сайтов 3, 7 и 15. Как это можно сделать с помощью SQL-запроса?

1 Ответ

4 голосов
/ 17 января 2011
SELECT 3 AS siteID, name, email
FROM site_3_details

UNION

SELECT 7 AS siteID, name, email
FROM site_7_details

UNION

SELECT 15 AS siteID, name,email
FROM site_15_details

Это ужасно плохой дизайн. Почему вы не можете поместить поле «siteID» в одну таблицу, что уменьшило бы запрос до:

SELECT name, email
FROM site_details
WHERE siteID IN (3,7,15);

комментарий:

Что ж, тогда вы просто измените отдельные запросы:

SELECT 7 AS siteID, ID as fieldID, name AS fieldName
FROM site_7_details WHERE SETTING IN ('name', 'email')

UNION

....

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...