Выборка из одинаковых по структуре таблиц одним запросом

D_A_S

Новичок
Выборка из одинаковых по структуре таблиц одним запросом

Доброго времени суток, All,

В процессе разработки скрипта возникла следующая проблемка:
У меня существует несколько идентичных по структуре таблиц с разными данными, и пользователь должен иметь возможность выбирать одну либо несколько таблиц для работы.
При этом не хочется делать количество запросов равным количеству таблиц, а желательно обойтись одним.
Единственный вариант, который я пока вижу - это создание всех возможных комбинаций таблиц, например при наличии таблиц А, B и C сделать таблицы AB, AC, BC, ABC и обращаться к нужной в зависимости от желания пользователя.
Проблема в том, что таблиц может быть и десять, и сто.

Собственно, хотелось бы узнать возможность "сцепки" таблиц, то есть некоей выборкой получать данные из таблиц A и B как если бы это была одна таблица (структура, напомню, идентична).

Заранее спасибо за помощь.
 

Mr_Max

Первый класс. Зимние каникулы ^_^
Команда форума
У меня существует несколько идентичных по структуре таблиц с разными данными, и пользователь должен иметь возможность выбирать одну либо несколько таблиц для работы.
а зачем столько таблиц с одинаковой структурой?
Тем более, Вам всё равно хочется их объединить. :)
 

D_A_S

Новичок
Mr_Max
чтобы пользователь не получал лишних данных :) а только те, до которых допущен админом.

Kirill
Возможно, пойду курить мануал :) Раньше UNIONом за ненадобностью не пользовался.
 

Mr_Max

Первый класс. Зимние каникулы ^_^
Команда форума
D_A_S
Вам не кажется что вы что-то не то делаете? Оно Вам надо?


По Вашему на этом форуме до-на много таблиц с топиками, для админов, модераторов, юзеров да?

-~{}~ 08.07.07 14:36:

Раграничивать нужно не таблицы, а логику работы с таблицами.
 

Wicked

Новичок
D_A_S
правильным решением будет объединение всех этих таблиц в одну. Вы же теперь, из-за своей непродуманной структуры, должны реализовать функционал WHERE с помощью UNION, а бредовее задачу в рамках баз данных вообразить сложно.
чтобы пользователь не получал лишних данных а только те, до которых допущен админом.
В частности, для этой задачи как раз лучше подходит именно WHERE.

Kirill
иногда на форуме нужно немного подумать, а не отвечать рефлекторно.
 

D_A_S

Новичок
Wicked
Брр, вы немного не поняли.

Существует десяток наборов данных, разных по сути, идентичных по структуре. Разбросаны они по таблицам от 1й до 10й (к примеру).

Хочется, чтобы админ мог выдавать доступы так, чтобы юзер1 видел данные только из таблиц 1,2,8, юзер 2 из таблиц 1,3,4,7,9 и т.п.

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

Mr_Max

Первый класс. Зимние каникулы ^_^
Команда форума

D_A_S

Новичок
Mr_Max
Слегка - да, по моему опыту на миллионе+ записей мускль начинает подхрюкивать.
За ссылочки спасибо.
 

Wicked

Новичок
Брр, вы немного не поняли.
да все видно как на ладони... и проблема, и кривость предполгаемого решения.

Как вариант, можно слить все в одну большую табличку с указанием из какой конкретно маленькой это было вытащено, но тогда получится табличка на миллион с лишним записей.
1) А вы не удосужились посчитать, сколько записей получится при составлении таблиц AB, AC, BC, ABC, и какого корядка будет эта зависимость?
2) Могу поспорить, что использование UNION'ов может скорее запороть прозводительность, чем ее улучшить. Яркий пример: сквозная сортировка результата выборки из нескольких таких таблиц. Так что предлагаю Вам пока что забыть о своих домыслах насчет производительности.

-~{}~ 08.07.07 19:17:

D_A_S
Слегка - да, по моему опыту на миллионе+ записей мускль начинает подхрюкивать.
часто это проблема не сколько MySQL-я как такогового, как его неправильного использования.
 

D_A_S

Новичок
Wicked
Про UNION согласен - судя по эксплейну, опрашиваемых рядов даже с адекватным использованием ключей выходит многовато.

На Ваш взгляд, оптимальным решением таки будет слияние в одну таблицу с указанием какой ряд из какой таблицы был изначально выдернут?
 

Wicked

Новичок
D_A_S
Разумеется! С одной оговоркой, что я бы сделал указание не на таблицу, а на сущность.

Потом, как и говорит Mr_Max, можно на это дело навесить какой-нибудь ACL, но мне кажется, что в данном случае лучше обойтись без этого.
 

D_A_S

Новичок
Wicked
Спасибо за совет, пожалуй, так и сделаю, с выборкой по ключу.
 
Сверху