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

  • Автор темы Автор темы ALEZ
  • Дата начала Дата начала

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, он имя таблицы в подзапросе хочет определять по результату выборке в основной таблице. то есть по факту, он хочет укусить себя за хвост.

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

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

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

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

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