powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / MySQL [игнор отключен] [закрыт для гостей] / Выборка из нескольких таблиц с одинаковой структурой
14 сообщений из 14, страница 1 из 1
Выборка из нескольких таблиц с одинаковой структурой
    #39096369
uttka
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Добрый день.
Имеется одна бд с шестью таблицами. Структура одинакова.
Запрос к каждой таблице примерно такой:
Код: plsql
1.
2.
3.
4.
(select id, name from table1 where id="2")
UNION
(select id, name from table2 where id="2")
....;


Но шесть раз выполнять селект не совсем логично, как мне кажется, кроме того, данный запрос будет выполняться (наверное) руками через heidiSQL, а не скриптом, и одинаковое условие так придется писать шесть раз.
Как реализовать грамотно?
Благодарю.
...
Рейтинг: 0 / 0
Выборка из нескольких таблиц с одинаковой структурой
    #39096374
Фотография Akina
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Создать надтаблицу (MERGE Engine)?
...
Рейтинг: 0 / 0
Выборка из нескольких таблиц с одинаковой структурой
    #39096399
uttka
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Akina,
Не совсем понимаю как это работает.
Можете пример для моего случая написать?
...
Рейтинг: 0 / 0
Выборка из нескольких таблиц с одинаковой структурой
    #39096410
Фотография Akina
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
...
Рейтинг: 0 / 0
Выборка из нескольких таблиц с одинаковой структурой
    #39096449
Фотография Lumix
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
uttkaКак реализовать грамотно?
Благодарю.
Для таких случаев были придуманы вьюхи.

Код: sql
1.
2.
3.
4.
5.
create view v as 
select id, name from table1
     UNION select id, name from table2
     UNION select id, name from table3
     ....;


И дальше обращайтесь с вьюхой v как с обычной таблицей.

Код: sql
1.
select * from v where id = 2;
...
Рейтинг: 0 / 0
Выборка из нескольких таблиц с одинаковой структурой
    #39096525
miksoft
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
LumixuttkaКак реализовать грамотно?
Благодарю.
Для таких случаев были придуманы вьюхи.

Код: sql
1.
2.
3.
4.
5.
create view v as 
select id, name from table1
     UNION select id, name from table2
     UNION select id, name from table3
     ....;



И дальше обращайтесь с вьюхой v как с обычной таблицей.

Код: sql
1.
select * from v where id = 2;

Только не забудьте убедиться, что MySQL проталкивает условие отбора внутрь view. Иначе индексы не сработают.

И, скорее всего, тут нужны UNION ALL, а не UNION.
...
Рейтинг: 0 / 0
Выборка из нескольких таблиц с одинаковой структурой
    #39096541
Фотография Lumix
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
miksoftТолько не забудьте убедиться, что MySQL проталкивает условие отбора внутрь view.

Думается мне, что без конкретных инструкций с вашей стороны, самостоятельно он не сможет убедиться проталкивает или не проталкивает. Квалификация у него не самая высокая, если он задает подобные вопросы... хотя я могу и ошибаться...
...
Рейтинг: 0 / 0
Выборка из нескольких таблиц с одинаковой структурой
    #39096563
miksoft
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
LumixmiksoftТолько не забудьте убедиться, что MySQL проталкивает условие отбора внутрь view. Думается мне, что без конкретных инструкций с вашей стороны, самостоятельно он не сможет убедиться проталкивает или не проталкивает.Это не самое плохое, есть еще хуже:
http://dev.mysql.com/doc/refman/5.5/en/view-algorithms.html If the MERGE algorithm cannot be used, a temporary table must be used instead. MERGE cannot be used if the view contains any of the following constructs:
...
UNION or UNION ALL
...

В итоге, имхо, либо MERGE Engine, либо исходный запрос топикстартера.
...
Рейтинг: 0 / 0
Выборка из нескольких таблиц с одинаковой структурой
    #39096685
Фотография Lumix
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
miksoftВ итоге, имхо, либо MERGE Engine, либо исходный запрос топикстартера.

Мой опыт подсказывает мне, что решение на вьюхе ему подойдет больше, потому что вопрос эффективности тут не стоит... ведь он сказал, что будет вручную делать запросы через heidiSQL. Поэтому даже если запрос будет выполняться 10 сек, то невелика беда - подождет! Удобство не вбивать условия каждый 6 раз В ДАННОМ КОНКРЕТНОМ случае - это важнее.
...
Рейтинг: 0 / 0
Выборка из нескольких таблиц с одинаковой структурой
    #39096699
Фотография Akina
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
LumixМой опыт подсказывает мне, что решение на вьюхе ему подойдет больше, потому что вопрос эффективности тут не стоит... ведь он сказал, что будет вручную делать запросы через heidiSQL. Поэтому даже если запрос будет выполняться 10 сек, то невелика беда - подождет! Удобство не вбивать условия каждый 6 раз В ДАННОМ КОНКРЕТНОМ случае - это важнее.Иными словами "я ни хрена не понял, что они тут сказали, но советую делать так, как я говорю".
...
Рейтинг: 0 / 0
Выборка из нескольких таблиц с одинаковой структурой
    #39096941
tanglir
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
LumixМой опыт подсказывает мне, что решение на вьюхе ему подойдет больше, потому что вопрос эффективности тут не стоит... ведь он сказал, что будет вручную делать запросы через heidiSQL.Если запросы он будет делать вручную, то ему нахрен не нужна вьюха, достаточно нажать Ctrl-H и заменить "2" на нужное значение. Такая замена займёт практически столько же времени, что и замена значения, передаваемого в отбор по вью, зато сам запрос будет работать быстрее.
...
Рейтинг: 0 / 0
Выборка из нескольких таблиц с одинаковой структурой
    #39096948
Фотография Lumix
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
tanglirи заменить "2" на нужное значение

и заменить 2 на нужное значение 6 РАЗ, а мой многолетний опыт подсказывает, что примерно в 25% случаев он будет в одном месте забывать заменить номер 4496 на 4483, особенно поздно вечером, потому что эти цифры сливаются, а результат такого запроса будет ошибочным, но он не сможет этого увидеть.

единственный способ верно производить подобную замену - копировать запрос в блокнот, там заменять через Ctrl + F и вставлять обратно, но это СЛОЖНЕЕ, чем сделать вьюху.
...
Рейтинг: 0 / 0
Выборка из нескольких таблиц с одинаковой структурой
    #39096965
tanglir
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Lumixи заменить 2 на нужное значение 6 РАЗ, а мой многолетний опыт подсказывает, что примерно в 25% случаев он будет в одном месте забывать заменить номер 4496 на 4483,а мой "многолетний опыт"(r)(c)(tm) подсказывает, что текстовому редактору <совсем все равно>, сколько раз значение встречается в обрабатываемом тексте
Lumixединственный способ верно производить подобную замену - копировать запрос в блокнот, там заменять через Ctrl + F и вставлять обратно, но это СЛОЖНЕЕ, чем сделать вьюхуЯ, наверное, ОЧЕНЬ сильно вас удивлю, но в нормальных дб-гуях, к коим можно отнести и heidisql, давно уже имеются (встроенные) редакторы запросов с поддержкой поиска/замены текста.
...
Рейтинг: 0 / 0
Выборка из нескольких таблиц с одинаковой структурой
    #39097024
miksoft
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Модератор: Меряние длиной опытом вырезал. Прошу впредь воздерживаться. А то выглядит как будто всего 15 лет, не 15 лет опыта.
...
Рейтинг: 0 / 0
14 сообщений из 14, страница 1 из 1
Форумы / MySQL [игнор отключен] [закрыт для гостей] / Выборка из нескольких таблиц с одинаковой структурой
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]