Задавайте вопросы, мы ответим
Вы не зашли.
добрый день
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", выбрать требуемые данные о нем.
какой самый простой и "элегантный" путь решения проблемы.
спасибо за любой совет и помощь.
Неактивен
В mysql имя таблицы не может быть динамическим, поэтому решением остаётся генерировать отдельные запросы на стороне сервера или использовать PREPARE в процедуре.
Неактивен
спасибо за ответ, но немного неверно вы поняли мою задачу. таблицы не формируются динамически, их имена заносятся в таблицу №11 динамически после того как пользователь посмотрит конкретный товар, при этом в таблицу №11 заносится имя таблицы в котором товар находится и его идентификатор. а задача - по списку таблиц товаров и их идентификаторам выбрать из этих таблиц их характеристики, например. спасибо еще раз ответ. если можно пример приведеите как "использовать PREPARE в процедуре" ?
Отредактированно skolozhabskiy (14.08.2011 14:41:24)
Неактивен
Неактивен
статья интересная спасибо, но чтобы в этом разобраться нужно не один месяц, а решене необходимо найти сейчас. Вы могли бы привести небольшой пример как это можно сделать в моем случае? спасибо
Неактивен