SQLinfo.ru - Все о MySQL Webew.ru: теория и практика веб-технологий

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

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

Вы не зашли.

#1 14.08.2011 12:42:59

skolozhabskiy
Участник
Зарегистрирован: 14.08.2011
Сообщений: 24

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

добрый день

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", выбрать требуемые данные о нем.

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

спасибо за любой совет и помощь.

Неактивен

 

#2 14.08.2011 14:31:28

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

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

В mysql имя таблицы не может быть динамическим, поэтому решением остаётся генерировать отдельные запросы на стороне сервера или использовать PREPARE в процедуре.

Неактивен

 

#3 14.08.2011 14:40:19

skolozhabskiy
Участник
Зарегистрирован: 14.08.2011
Сообщений: 24

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

спасибо за ответ, но немного неверно вы поняли мою задачу. таблицы не формируются динамически, их имена заносятся в таблицу №11 динамически после того как пользователь посмотрит конкретный товар, при этом в таблицу №11 заносится имя таблицы в котором товар находится и его идентификатор. а задача - по списку таблиц товаров и их идентификаторам выбрать из этих таблиц их характеристики, например. спасибо еще раз ответ. если можно пример приведеите как "использовать PREPARE в процедуре" ?

Отредактированно skolozhabskiy (14.08.2011 14:41:24)

Неактивен

 

#4 14.08.2011 17:16:17

vasya
Архат
MySQL Authorized Developer
Откуда: Орел
Зарегистрирован: 07.03.2007
Сообщений: 5842

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

Неактивен

 

#5 14.08.2011 17:25:16

skolozhabskiy
Участник
Зарегистрирован: 14.08.2011
Сообщений: 24

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

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

Неактивен

 

Board footer

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