Мы используем cookie-файлы
Для оптимизации работы нашего сайта мы используем cookie-файлы. Продолжая использовать сайт, Вы соглашаетесь с использованием cookie-файлов.
Панель управления
  • Русский
  • Українська
  • UAH
  • USD
  • RUB
  • EUR
  • 0-800-307-307  Горячая линия
  • +38(044) 392-74-33  Киев
  • +38(057) 728-39-00  Харьков
  • +38(056) 794-38-31  Днепр
  • +38(032) 229-58-93  Львов
  • +38(048) 738-57-70  Одесса
  • +38(093) 170-15-42  Life
  • +38(067) 400-88-44  Киевстар
  • +1(888)393-24-51  USA, Toll free
  • +44(131)507-01-14  Great Britain
  • +7(499) 348-28-61  Москва

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


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

добрый день
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", выбрать требуемые данные о нем.
какой самый простой и "элегантный" путь решения проблемы.
спасибо за любой совет и помощь.

rudenko
9 лет
0

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

Участвовать в общении на этом форуме могут только зарегистрированные пользователи.