SQLinfo.ru - Все о MySQL

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

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

Вы не зашли.

#1 18.01.2012 15:18:50

shaienn
Участник
Зарегистрирован: 18.01.2012
Сообщений: 1

Как правильно составить запрос из множества таблиц?

Добрый день.
Есть таблица lot_1, в ней есть список товаров с уникальными id
-------------
| desc   | id |
-------------
| Носки | 1 |
| Трусы | 2 |
-------------
Есть таблица lot_2, в ней список других товаров с уникальными id

Есть таблица заказов user_cart, в которой заказанные товары представляются столбцами:
1) Таблица заказанного товара
2) id заказанного товара в таблице

Заказов может быть много из разных таблиц, то есть возникает таблица
---------------------
| tablename | itemId |
---------------------
| lot_1        |       1 |
| lot_2        |       2 |
---------------------

Чтобы мне забрать информацию о товаре (при выводе корзины), мне нужно обратиться в соответствующую таблицу, а потом вывести полученные данные.

Вопрос в том, можно ли это делать в одном запросе? Мне же, при выводе каждой строки нужно обращаться к другой (и каждый раз разной) таблице.

И как это делать? Создавая временную таблицу или как-то JOINами можно?

Спасибо

Неактивен

 

#2 19.01.2012 02:51:09

deadka
Администратор
Зарегистрирован: 14.11.2007
Сообщений: 2422

Re: Как правильно составить запрос из множества таблиц?

Если хотите делать это на "чистом" sql, то придётся использовать подготовленные выражения. В данном случае проще на клиенте вытаскивать значения из столбца table_name, формировать соответствующие запросы и их уже на базу натравливать. Можно в цикле серией запросов, а можно через union сформировать один запрос.


Зеленый свет для слабаков, долги отдают только трусы, тру гики работают только в консоли...

Неактивен

 

#3 19.01.2012 07:47:37

ita
Участник
Зарегистрирован: 24.09.2008
Сообщений: 19

Re: Как правильно составить запрос из множества таблиц?

Сложность возникает из-за того, что Вы, скорее всего, не правильно спроектировали структуру данных:  почему бы информацию о всех товарах не хранить в одной таблице, т.е. создать справочник товаров. Зачем товары раскидывать по разным таблицам? Ведь у таблиц lot1 и lot2 одинаковая структура? Т.е. создать справочник товаров lot3 следующей структуры: desc, id, typ. Т.е. добавить еще одно поле typ - тип товара.
После этого запрос будет очень простым:
select * from lot3 inner join  user_cart
             on lot3.id=user_cart.id

Неактивен

 

Board footer

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