• UAH
  • USD
  • RUB
  • EUR
  • +38(044) 392-74-33  Киев
  • +38(057) 728-39-00  Харьков
  • +38(056) 794-38-31  Днепропетровск
  • +38(062) 210-24-93  Донецк
  • +38(032) 229-58-93  Львов
  • +38(048) 738-57-70  Одесса
  • +38(093) 449-04-21  Life
  • +38(067) 400-88-44  Киевстар
  • +38(095) 007-72-35  MTC
  • +1(888)393-24-51  USA, Toll free
  • +44(131)507-01-14  Great Britain
  • +7(499) 348-28-61  Москва

MySQL. последовательная выборка из нескольких таблиц

Форумы MySQL последовательная выборка из нескольких таблиц
skandriyresearch
14.08.2011 11:48
хостинг: нет
домен: нет
последовательная выборка из нескольких таблиц
добрый день

1. есть 10 одинаковых таблиц (имена полей или столбцов) с разными данными:
например,

Таблица_№1
Таблица_№2
Таблица_№3
Таблица_№4
.......
Таблица_№10

2. имена этих таблиц динамически заносятся в поле "tableName" другой таблицы "таблица_№11" в зависимости от того что выбирает пользователь - ноутбук какой-то марки, карандаш, резинку разной твердости или ручку, например:

id user product tableName prodId
1 sasa ноутбук Т Таблица_№1 3
2 dara карандаш Таблица_№5 1
3 sasa ручка Таблица_№2 6
4 sasa резинка-тверд. Таблица_№7 1
5 sasa ноутбук М Таблица_№1 5
6 sasa резинка-мягкая Таблица_№7 2

и так далее, число таблиц занесенных в таблицу "таблица_№11" может меняться динамически. какие-то добавляются, какие-то удаляются в зависимости от поля user.

Получить имена таблиц относящиеся к пользователю "sasa" поля "user" и с исключением повторений можно так:


$user = 'sasa';
$query = "SELECT DISTINCT `tableName` FROM `Таблица_№11` WHERE `user`='$user'";
$result = mysql_query($query)

В результате мы получим: "Таблица_№1", "Таблица_№2" и "Таблица_№7". То есть для пользователя sasa необходимо выбрать данные из этих таблиц. Здесь все понятно.

Вопрос: как одим запросом, зная имена таблиц (поле "tableName") для пользователя "sasa" и идентификационный номер просмотренного товара "prodId" в этих таблицах, получить соответствующие данные об этом товаре из всех таблиц последовательно без циклов?

запрос типа:


$query = "SELECT * FROM (SELECT DISTINCT `tableName` FROM `Таблица_№11` WHERE `user`='$user')";


не работает.

никаких перекрещиваний, объединений нет (UNION, JOIN и так далее), просто необходимо последовательно, зная имена таблиц и id товара, на которые ссылается запись-выборка "sasa", выбрать требуемые данные о нем.

какой самый простой и "элегантный" путь решения проблемы.

спасибо за любой совет и помощь.
Илья
08.09.2011 10:55
хостинг: есть
домен: есть
1. Необходимо в данном случае при помощи PHP генерировать запросы и объединять их при помощи UNION - самый простой и правильный способ.
2. Можно написать сохраненную процедуру, в которой можно генерировать SQL запрос и выполнять его.
Участвовать в общении на этом форуме могут только
зарегистрированные пользователи.

Если вы уже зарегистрированы Вам необходимо войти на форум.

Тема закрыта по истечению срока давности.
Горячая линия
(044)
392 74 33
другие города