Использовать значения полей из SELECT в WHERE

ALEZ

Новичок
Использовать значения полей из SELECT в WHERE

Существует ли структура языка, при помощи которой можно одно или несколько значений, выбираемых в SELECT, использовать в условиях (и подзапросах) WHERE? Например:

PHP:
SELECT `id`, `name` AS `newtablename` FROM `table` WHERE `id_owner` IN (SELECT `id` FROM `table_ . (присоединяем `newtablename`)` WHERE 1) ORDER BY `id` ASC
Спасибо.
 

FB3

Новичок
А такой запрос, как в примере, разве не работает? :)
 

dimagolov

Новичок
FB3, он имя таблицы в подзапросе хочет определять по результату выборке в основной таблице. то есть по факту, он хочет укусить себя за хвост.

ALEZ
создаешь таблицы:
1. список таблиц (id, name)
2. список владельцев (id, name)
3. связи таблица-владелец

после чего твоя задача (если мне удалось догадаться чего тебе надо) решается через JOIN

а кстати, чего ты хочешь отобрать (словами)?
 

ALEZ

Новичок
dimagolov
Да, именно "укусить себя за хвост". Через предварительную подготовку таблиц и JOIN решить попробую. То есть более элегантных решений не существует?

Теперь словами. В интернет-магазине есть три таблицы с товарами (атавизм архитектуры, от которого тяжело избавиться). При выборке навигации по тегам желательно проверять существование товаров для каждого из них (если товаров нет, то зачем выводить его в навигации?). Каждый тег относится к какому-то типу товаров, который и указан в одном из полей таблицы. Этот тип совпадает с названием таблицы, где эти товары хранятся. Узнав тип, я хотел бы подставить название таблицы в запрос (который находится в секции WHERE) с условиями вывода товара на сайт.

Можно сделать три разных запроса, а потом на уровне php объединить данные. Но, наверное, удобней было бы решить все средствами mysql.
 

dimagolov

Новичок
Можно сделать три разных запроса
если не менять структуру БД, то так и надо сделать. если менять, то сливать три таблицы в одну и вводить поле "тип" по которому различать. но если там в тех трех поля существенно различаются, то тогда нужно думать, как выходить из ситуации
 
Сверху