Новые книги

Успех компании зависит от выбора наиболее подходящей бизнес-модели. Предложенная в этой книге методология – отличное подспорье как для начинающих компаний, так и для тех, кто хочет перестроить свой бизнес и достигнуть новых высот. Авторы рассказывают о стратегии создания и внедрения инновационных бизнес-моделей, а также о важных этапах и препятствиях на этом пути. Основная часть книги – это 55 шаблонов бизнес-моделей, по которым строится бизнес наиболее успешных современных компаний. Вы найдете подробное описание бизнес-моделей, историю их развития и советы о том, в каких случаях стоит взять на вооружение именно этот шаблон.
Вы на заслуженном отдыхе… сосредоточенно копите деньги на подарки внукам, ищете способы разнообразить свою жизнь и всеми силами стараетесь заработать дополнительную копеечку к мизерной пенсии. А вокруг вас продолжает крутиться динамичный молодёжный мир Интернета, который кажется далёким и непонятным. Но Любовь Левина уверена, что заработать на пенсии можно не только вязанием носочков – есть много других не менее успешных, а главное – современных методов работы (и не таких страшных, как кажется на первый взгляд)!

Попробуйте под чутким руководством Любови Левиной создать свой маленький бизнес в Интернете – и узнайте, на что вы способны!

Попробуйте – и у вас обязательно получится!

Запросы, использующие EXISTS

3.3.6. Запросы, использующие EXISTS

Квантор EXISTS (существует) - понятие, заимствованное из формальной логики. В языке SQL предикат с квантором существования представляется выражением EXISTS (SELECT * FROM ...).

Такое выражение считается истинным только тогда, когда результат вычисления "SELECT * FROM ..." является непустым множеством, т.е. когда существует какая-либо запись в таблице, указанной во фразе FROM подзапроса, которая удовлетворяет условию WHERE подзапроса. (Практически этот подзапрос всегда будет коррелированным множеством.)

Рассмотрим примеры. Выдать названия поставщиков, поставляющих продукт с номером 11.

Результат:
  SELECT	Название
FROM	Поставщики
WHERE	EXISTS
	(	SELECT	*
		FROM	Поставки
		WHERE	ПС = Поставщики.ПС
		AND	ПР = 11 );
Название
СЫТНЫЙ
УРОЖАЙ
КОРЮШКА
ЛЕТО

Система последовательно выбирает строки таблицы Поставщики, выделяет из них значения столбцов Название и ПС, а затем проверяет, является ли истинным условие существования, т.е. су-ществует ли в таблице Поставки хотя бы одна строка со значением ПР=11 и значением ПС, равным значению ПС, выбранному из таблицы Поставщики. Если условие выполняется, то полученное значение столбца Название включается в результат.

Предположим, что первые значения полей Название и ПС равны, соответственно, 'СЫТНЫЙ' и 1. Так как в таблице Поставки есть строка с ПР=11 и ПС=1, то значение 'СЫТНЫЙ' должно быть включено в результат.

Хотя этот первый пример только показывает иной способ формулировки запроса для задачи, решаемой и другими путями (с помощью оператора IN или соединения), EXISTS представляет собой одну из наиболее важных возможностей SQL. Фактически любой запрос, который выражается через IN, может быть альтернативным образом сформулирован также с помощью EXISTS. Однако обратное высказывание несправедливо.

Выдать название и статус поставщиков, не поставляющих продукт с номером 11.

Результат:
  SELECT	Название, Статус
  FROM	Поставщики
  WHERE	NOT EXISTS
	(	SELECT	*
		FROM 	Поставки
		WHERE	ПС = Поставщики.ПС
		AND	ПР = 11 );
НазваниеСтатус
ПОРТОСкооператив
ШУШАРЫсовхоз
ТУЛЬСКИЙуниверсам
ОГУРЕЧИКферма

3.3.5 | Содержание | 3.3.7