Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > MySQL > Название таблицы в поле...


Автор: Kefir 14.9.2005, 16:10
Мне надо сделать выборку из нескольких таблиц (например tbl1 и tbl2) так, чтобы в отделное поле (напр. from_table) ещё записывалось название таблицы, откуда выбрана запись. т.е. результ будет примерно таким:
Код

SELECT *,from_table FROM tbl1, tbl2 WHERE ...

Код

id | from_table | data
 1 | tbl1       | foo1
 3 | tbl2       | foo2
15 | tbl1       | foo5
14 | tbl1       | foo6
12 | tbl2       | foo8

Автор: Kefir 14.9.2005, 21:34
хм... в общем я нашёл решение для моего частного случая. на всякий случай запостю сюда:
Код

SELECT *, 'tbl1' AS from_table FROM tbl1 UNION SELECT *, 'tbl2' AS from_table FROM tbl2

Это, конечно, не универсальное решение, но может кому-нибудь пригодится.

Автор: Akina 14.9.2005, 22:06
Kefir
Это - плохое решение. Поля в каждом запросе следует указывать явно - нет гарантии, что суммируемые выборки будут иметь одинаковый порядок следования полей, возможны как невыполнение запроса по ошибке преобразования, так и тихое получение неверных данных, если поменены местами поля одного типа.
Кроме того, не требуется указывать имена результирующих полей во втором и последующих запросах - они игнорируются.

Т.е. должно было быть:

Код

      SELECT ID, 'tbl1' As From_Table, Data FROM tbl1
UNION
      SELECT ID, 'tbl2'              , Data FROM tbl2


Автор: Kefir 15.9.2005, 10:01
Hm... spasibo za sovet smile u4tu v budushem.

// izvinite za translit - checkbox po4emu-to ne rabotaet...

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)