запрос с условием на другой запрос

kostic
Дата: 17.11.2009 09:19:16
... прошу прощения, может это и просто, но ни разу не встречалось
есть таблица
p1p2
Иванов301
Петров501
Сидоров901

и надо одним запросом вывести
все записи, где есть Иванов, а если Иванова нет в таблице, то вывести просто
значения поля p1. Вот это "если" сбивает с толку, не знаю, как вывести.
Спасибо.
kostic
Дата: 17.11.2009 09:22:17
немного не точно ... надо так
надо одним запросом вывести
все записи, где есть Иванов, а если Иванова нет в таблице,
то вывести просто все записи таблицы.
а.четакова
Дата: 17.11.2009 09:30:06
так можно
select * from таблица where p1='Иванов' OR DCount("*","таблица","p1='Иванов'")=0
qwrqwr
Дата: 17.11.2009 09:39:28
kostic,
SELECT * FROM T
WHERE T.p1 = All (SELECT p1 FROM T WHERE p1='Иванов');
kostic
Дата: 17.11.2009 09:50:42
спасибо за ответы - век живи, век учись
а вот этот синтаксис вообще вижу впервые
qwrqwr
kostic,
SELECT * FROM T
WHERE T.p1 = All (SELECT p1 FROM T WHERE p1='Иванов');

есть ли в справке такое ?
нет ли ссылки, где есть описание этого, неужели это в F1 ?
правда запросик этот выводит и Иванов и остальное, когда есть Иванов,- но это сам додумаю.
спасибо
kostic
Дата: 17.11.2009 09:53:23
kostic,
нет, всё правильно, рабтает этот запрос корректно,
просто чудо ...
а за счёт чего? никаких or в запросе нет и - работает
Ещё раз спасибо :))
qwrqwr
Дата: 17.11.2009 09:58:37
kostic

нет ли ссылки, где есть описание этого, неужели это в F1 ?

есть прямо на этом сайте :) http://www.sql.ru/docs/sql/u_sql/ch13.shtml
КОГДА ПОДЗАПРОС ВОЗВРАЩАЕТСЯ ПУСТЫМ
Одно значительное различие между ALL и ANY - способ действия в cитуации когда подзапрос не возвращает никаких значений.
В принципе, всякий раз, когда допустимый подзапрос не в состоянии сделать вывод,
ALL - автоматически верен, а ANY автоматически неправилен.

kostic

правда запросик этот выводит и Иванов и остальное, когда есть Иванов,- но это сам додумаю.
Это не понял ?? - он выводит только записи с 'Иванов' - если они есть в p1 - и все записи таблицы если такой строки нет в p1 - все по ТЗ.
kostic
Дата: 17.11.2009 10:09:38
qwrqwr,
огромное спасибо за разъяснение, вникну
====================
здесь
/topic/712573#7937419
уже понял, что запрос верно работает,
просто решение неожиданно простое и "в точку",
главное без or и iif ... , All - решило всё
Да, если такое задание, например, на собеседовании попадётся ... сломаешь шею, а без знания
действия All - не сделаешь.
Ещё раз - спасибо, и низкий поклон вашим знаниям.