[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: как использовать SELECT в WHERE
seine
ph34r.gif

Видел где-то запрос вида

SELECT *
FROM ...
WHERE (SELECT ...)


Суть в том, что в условии WHERE указывался еще один SELECT. Больше потом так и не смог найти как этим правильно пользоваться.
Вопрос соб-но в этом и состоит, как использовать SELECT в условии WHERE



Спустя 8 минут, 41 секунда (9.11.2009 - 14:42) twin написал(а):
Это называется вложенный запрос. То есть первый ориентируется на результат второго.

Спустя 3 минуты, 41 секунда (9.11.2009 - 14:46) seine написал(а):
во, и как это использовать? бо я не могу найти примеров((( unsure.gif

Спустя 21 минута, 35 секунд (9.11.2009 - 15:07) seine написал(а):
Напишу, что мне нужно, мож лучше будет обойтись как-то без встроенных запросов.

есть таблица. у таблицы есть поля

id
parent_id


т.е. понятно, что если у записи id=3, то все записи у которых parent_id=3 являются ее "детьми", ну не важно зачем это надо.

Так вот нужно выбрать из таблицы несколько записей (сколько именно указывается в переменной), причем у всех записей, которые надо выбрать не должно "детишек".
Вона как! ph34r.gif

Спустя 8 минут, 3 секунды (9.11.2009 - 15:15) stepan написал(а):
SELECT `id`, `name`
FROM `таблица1`
WHERE `id`
IN ( SELECT `parent_id`
FROM `таблица2`
)

смысл - выбрать из таблице1 поля id и name при условии если имеются совпадения id из таблице1 с parent_id из таблице2.

Спустя 11 минут, 16 секунд (9.11.2009 - 15:26) sergeiss написал(а):
Цитата (DIII @ 9.11.2009 - 16:07)
Так вот нужно выбрать из таблицы несколько записей (сколько именно указывается в переменной), причем у всех записей, которые надо выбрать не должно "детишек".


В Постгре вот так примерно сработает:
select id, name from tablemain t1 where (select count(*) as c from tablemain t2 where t1.id=t2.parent_id) = 0 and id in (1, 3, 5, 6,10)

То есть, выбрать все айди и имена из таблицы, для которых нету "детей", и сделать это для айди с номерами из списка.

Я думаю, что и в других БД тоже должно работать.

Спустя 2 часа, 28 минут, 40 секунд (9.11.2009 - 17:55) seine написал(а):
stepan, спасибо за совет

только у меня все хранится в одной таблице, но я замену уж сам смогу сделать

Спустя 6 минут, 42 секунды (9.11.2009 - 18:02) stepan написал(а):
Цитата (DIII @ 9.11.2009 - 14:55)
спасибо за совет

Пожалуйста, если что обращайся cool.gif .
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.