SQLinfo.ru - Все о MySQL

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

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

Вы не зашли.

#1 07.01.2009 13:35:22

Proger
Активист
Откуда: Санкт-Петербург
Зарегистрирован: 04.09.2008
Сообщений: 172

Узнать из какой таблицы данные при выборке из нескольких

Здраствуйте.
Банальный собственно вопрос, как узнать из какой таблицы были извлечены данные, если извлечение идет не из одной таблицы?

Например

SELECT `name` FROM `table1`, `table2`, `table3` WHERE `id` = 1000


При обработке в while желательно бы как-то узнать из какой таблицы данные, или нужно просто везде сделать поле которое для каждой таблицы своё и хранить там скажем true?

Add: понятно что можно сделать выборку типа `table1`.`name`, `table2`.`name` as name2, но у меня может быть задан только один NAME из этих трёх. И мне нужно узнать откуда он был взят.

Заранее спасибо, жду решения.

Отредактированно Proger (07.01.2009 13:37:32)

Неактивен

 

#2 07.01.2009 17:27:17

rgbeast
Администратор
MySQL Authorized Developer and DBA
Откуда: Москва
Зарегистрирован: 21.01.2007
Сообщений: 3878

Re: Узнать из какой таблицы данные при выборке из нескольких

Проще всего избегать ситуации в которой Вы не знаете из какой таблицы поле.

А. Посмотреть структуру таблиц. Если поле есть в нескольких таблицах, то будет синтаксическая ошибка

Б. Делать запрос явным
SELECT `table1`.`name` FROM `table1`, `table2` ..

В. Указанный Вами запрос не имеет никакого смысла - это полный JOIN кубический. Если хотелось другое, используйте UNION

(SELECT '1' AS t, `name` AS name FROM `table1`) UNION ALL (SELECT '2' AS t, `name` AS name FROM `table2`)

В этом случае колонка t будет содержать номер таблицы.

Неактивен

 

#3 07.01.2009 22:20:44

Proger
Активист
Откуда: Санкт-Петербург
Зарегистрирован: 04.09.2008
Сообщений: 172

Re: Узнать из какой таблицы данные при выборке из нескольких

Очень интерестно. Спасибо, буду думать.

Неактивен

 

Board footer

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