SQLinfo.ru - Все о MySQL

Форум пользователей MySQL

Задавайте вопросы, мы ответим

Вы не зашли.

#1 05.07.2011 11:30:52

Akylenok
Участник
Зарегистрирован: 27.05.2010
Сообщений: 15

Произвольное объединение таблиц

Скажите есть ли такая возможность в MySQL?

А сейчас немного поясню. Имеется таблица Index в которой хранятся данные следующего формата:
Поле table - название таблиц в этой же базе (их произвольное количество)
Поле item_id - идентификатор элемента в таблице с именем указанным в поле table
Поле alphabet - первая буква имени элемента (поле name элемента с идентификатором item_id таблицы table)

все таблицы указанные в поле table имеют какие-то одинаковые поля (заранее известные, например name и description ) и какие то свои (произвольные).

Можно ли получить одним запросом выборку всех данных из всех таблиц (поле table), где в таблице Index поле alphabet равно например букве A.

Неактивен

 

#2 05.07.2011 14:40:20

paulus
Администратор
MySQL Authorized Developer and DBA
Зарегистрирован: 22.01.2007
Сообщений: 6757

Re: Произвольное объединение таблиц

Можно, но не делайте так wink

Например, используя PREPARE создать строку, которая будет делать UNION
из соответствующих таблиц.

Неактивен

 

#3 05.07.2011 15:47:04

Akylenok
Участник
Зарегистрирован: 27.05.2010
Сообщений: 15

Re: Произвольное объединение таблиц

У меня получилось двумя запросами. Первым я выбираю нужные таблицы, потом средствами php создаю текст запроса по этим таблицам ,сцепляя их через UNION и выполняю его.

Неактивен

 

#4 05.07.2011 15:54:15

paulus
Администратор
MySQL Authorized Developer and DBA
Зарегистрирован: 22.01.2007
Сообщений: 6757

Re: Произвольное объединение таблиц

Вот, потренироваться — хорошо, а в продакшне так делать не стоит smile

Неактивен

 

#5 06.07.2011 14:56:27

Akylenok
Участник
Зарегистрирован: 27.05.2010
Сообщений: 15

Re: Произвольное объединение таблиц

т.е. даже решением из двух запросов тоже считается плохим?

а как же тогда бытьsmile если по каждой таблице делать отдельный запрос
это же больше нагрузки на БД, нежели одним запросом через UNION?

Неактивен

 

#6 06.07.2011 17:57:05

paulus
Администратор
MySQL Authorized Developer and DBA
Зарегистрирован: 22.01.2007
Сообщений: 6757

Re: Произвольное объединение таблиц

Любые обобщенные решения, как правило, работают хуже, чем частные
(и по производительности, и по правильности работы). Если Вы пытаетесь
засунуть разнородные данные в одну базу и обращаться с ними, как просто
с набором разнородных данных, то имеет смысл сделать честный hash-value,
и не притворяться, что у Вас реляционная база. Это будет куда проще для
понимания.

Неактивен

 

Board footer

Работает на PunBB
© Copyright 2002–2008 Rickard Andersson