Xpoint
   [напомнить пароль]

Значение поля как имя таблицы

Метки: [без меток]
2006-03-28 08:43:33 [обр] Vladmir[досье]

Имеются таблички:
table1

idsomeDataid_tabletableName
1aa1table2

table2

id_tableData
1aaa_aaa

Табличек типа Table2 несколько. Вопрос: как построить сводный запрос, что-то вроде:

 select t1.someData, tableName tName, tName.Data from table1 t1, tName
      where tName.id_table = t1.id_table

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

спустя 23 минуты [обр] Денис Гетман(5/228)[досье]

 В рамках обычного SQL - присоединяться ко все таблицам сразу и выбирать нужное поле.
типа

 SELECT (CASE WHEN tableName = '2' THEN table2.Data WHEN tableName = '3' THEN table3.Data  END) 
 FROM t1 LEFT JOIN t2 ON (t1.id_table = t2.id_table) LEFT JOIN t3 ON (t1.id_table = t3.id_table)

 А для конкретных СУБД можно поизвращаться с наследованием таблиц, функциями и еще не знаю чем.

спустя 1 минуту [обр] Роман Чемисов(0/350)[досье]
Vladmir[досье]
Вам надо сохранить результат запроса в переменной, а потом вставить значение переменной в нужный запрос.
В MySQL это делается примерно так:
SELECT @min := MIN(added) FROM tblnumbers;
SELECT * FROM tbldata WHERE number = @min;
спустя 48 минут [обр] Vladmir[досье]

Денис Гетман[досье] База будет MySQL. Так что видимо нужно грузить все таблицы. Жаль. Спасибо Вам за совет.

Роман Чемисов[досье] При большом кол-ве строк с разными именами таблиц, IMHO, будет жестоко каждый раз переменную использовать.

спустя 3 минуты [обр] Денис Гетман(5/228)[досье]
Vladmir[досье] Совет так себе - производительность не забудьте протестировать. Если мало обновлений и много запросов, подумайте над тем, чтобы делать временную сводную таблицу.
 А вообще-то, у вас схема СУБД неправильная, раз приходится такие запросы писать.
спустя 1 минуту [обр] Роман Чемисов(0/350)[досье]
Vladmir[досье]
Я вообще считаю этот мир жестоким :-).
спустя 21 минуту [обр] Vladmir[досье]
Денис Гетман[досье] Временную таблицу не хочу делать. Именно по этой причине нужен такой страшный запрос.
Сам понимаю, что база получается по структуре так себе. Но как по-другому сделать не придумал пока. А проблема у меня такая: хочу сделать примерно как в 1С - есть куча разных документов и есть общий журнал, в кот. заносятся общие для документов поля. Запрос для этого журнала и был вынесен на обсуждение.
Роман Чемисов[досье] Ой. Даже не говорите :)
Powered by POEM™ Engine Copyright © 2002-2005