SQLinfo.ru - Все о MySQL

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

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

Вы не зашли.

#1 25.07.2011 13:10:24

andrey55555
Участник
Зарегистрирован: 25.07.2011
Сообщений: 2

Идентификация строк при выборке из двух таблиц

Доброго времени суток, уважаемые ГУРУ!

У меня вот такой "чайниковский" вопрос. Есть две разные таблицы с комментариями к разным разделам сайта. Надо комментарии от разных разделов разместить одной "лентой". Для этого надо сделать выборку из двух таблиц и отсортировать все записи по времени.
Это я сделал вот таким запросом:
   $sql="SELECT `comment_id`, `comment_date`, `comment_text` FROM `comment_table` UNION
         SELECT `shop_comment_id`, `shop_comment_date_time`, `shop_comment_text` FROM `shop_comment_table` ORDER BY `comment_date` DESC";

Дополнительно надо по `comment_id` и `shop_comment_id` из других таблиц извлекать еще и другую информацию. Причем для `comment_id` - свои таблицы, а для `shop_comment_id` - свои.

В результате же выполнения запроса (текст которого приведен выше) все строки имеют одинаковый `comment_id`. Как мне отличить к какой таблице принадлежит строка результата запроса: к `comment_table` или к  `shop_comment_table`?

Можно конечно делать дополнительный запрос по comment_id для
`comment_table` и `shop_comment_table` и определять наличие такой записи в каждой из таблиц, но это не совсем верно, так как номера могут пересекаться.

Может есть какой-то другой метод определения к какой таблице принадлежит строка (типа `shop`AS Type или по другому - я точно не знаю) ?
Какой синтаксис такого идентификатора и как потом обращаться к этому идентификатору?

Неактивен

 

#2 25.07.2011 18:32:37

evgeny
Гуру
Зарегистрирован: 04.05.2009
Сообщений: 335

Re: Идентификация строк при выборке из двух таблиц

Покажите в таком виде ваши таблицы с ихним содержанием.

table1
+----+---------+----------+
| id | user_id | order_id |
+----+---------+----------+
|  1 |       0 |   771296 |
|  2 |       0 |   885039 |
|  3 |       0 |   242590 |
|  4 |       0 |   242591 |
|  5 |       0 |   885040 |
+----+---------+----------+

А потом аналогично покажите то что хотите получить.

Неактивен

 

#3 26.07.2011 10:47:04

andrey55555
Участник
Зарегистрирован: 25.07.2011
Сообщений: 2

Re: Идентификация строк при выборке из двух таблиц

Всем спасибо! Заработало!
Сделал так:
SELECT `comment_id`, `comment_date`, `comment_text`, 'comment_table' AS tbname
FROM `comment_table`

UNION

SELECT `shop_comment_id`, `shop_comment_date_time`, `shop_comment_text`, 'shop_comment_table' AS tbname
FROM `shop_comment_table`

ORDER BY `comment_date` DESC


После добавления 'comment_table' AS tbname и 'shop_comment_table' AS tbname - в результирующем запросе появляется дополнительное поле tbname. Для строк из таблицы 'comment_table' поле tbname имеет значение 'comment_table', а для
таблицы 'shop_comment_table' соответственно - 'shop_comment_table'.
Имя поля tbname может быть любым и его значение ('comment_table' и 'shop_comment_table') то же могут быть любыми.
Еще раз всем спасибо!

Неактивен

 

Board footer

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