Новые книги

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

Для ученых и специалистов, решающих задачи в области информационного обеспечения туризма, студентов по специальностям «информационные системы и технологии», «социально-культурный сервис и туризм», «информационный менеджмент» и др.
Эта книга – незаменимый путеводитель для менеджеров по продажам, начальников отделов продаж и сбыта, руководителей торговых предприятий, а также владельцев различных бизнесов.

Каждый, кто хочет научиться увеличивать свои продажи и повышать их конверсию, найдет здесь самые эффективные из современных техник – техник, которые продают сами.

В книге содержится ошеломляющая информация о психологии потребителя. Рекомендации автора – это ключ к эмоциям людей, который позволит вам влиять на принятие решений и в короткий срок кратно увеличить свои продажи.

Эта книга поможет вам увидеть свои ошибки, подскажет, как правильно написать скрипты и продающие тексты, подготовить выступление и видеоролик, создать кейс, научит работать с возражениями клиентов и многому другому.

Использование INSERT...SELECT для построения внешнего соединения

4.3.3. Использование INSERT...SELECT для построения внешнего соединения

Рассмотренное в п.3.2.3 естественное соединение двух таблиц не включает тех строк какой-либо из них, для которых нет соответствующих строк в другой таблице. Например, если в таблицу Блюда были занесены под номером 34 сведения о Шашлыке, а рецепт его приготовления не был занесен в таблицу Рецепты, то при загрузке их естественного соединения в таблицу Временная:

CREATE TABLE Временная
	(	Вид	CHAR (8),
		Блюдо	CHAR (60),
		Рецепт	CHAR (560));

INSERT
INTO	Временная
SELECT	Вид, Блюдо, Рецепт
FROM	Блюда, Рецепты, Вид_блюд
WHERE	Блюда.БЛ = Рецепты.БЛ
AND	Блюда.В = Вид_блюд.В;

в ней не окажется строки с Шашлыком (в таблице Рецепты не обнаружен код 34, и строка с этим кодом исключена из результата).

Следовательно, в некотором смысле можно считать, что при обычном соединении теряется информация для таких несоответствующих строк. Однако иногда (как и в приведенном примере) может потребоваться способность сохранить эту информацию. В этом случае можно воспользоваться так называемым внешним соединением:

INSERT
INTO	Временная
SELECT	Вид, Блюдо, Рецепт
FROM	Блюда, Рецепты, Вид_блюд
WHERE	Блюда.БЛ = Рецепты.БЛ
AND	Блюда.В = Вид_блюд.В;

INSERT
INTO	Временная
SELECT	Вид, Блюдо, “???”
FROM	Блюда, Вид_блюд
WHERE	Блюда.В = Вид_блюд.В
AND	БЛ NOT IN
	(	SELECT	БЛ
		FROM	Рецепты);

В результате будет создана базовая таблица

Вид БлюдоРецепт
ЗакускаСалат летнийПомидоры и яблоки нарезать...
Закуска Салат мясной Вареное охлажденное мясо, ...
. . .
Напиток Кофе черный Кофеварку или кастрюлю спо...
Напиток Кофе на молоке Сварить черный кофе, как ...
Горячее Шашлык???

где первые 33 строки соответствуют первому INSERT и представляют собой проекцию естественного соединения таблиц Блюда и Рецепты по кодам блюд (БЛ), включающую три столбца. Последняя строка результата соответствует второму INSERT и сохраняет информацию о блюде Шашлык, рецепт котого пока не введен в таблицу Рецепты.

Заметим, что для внешнего соединения нужны два отдельных INSERT...SELECT. Однако тот же результат можно получить и одним INSERT...SELECT, используя фразу UNION, объединяющую предложения SELECT из двух INSERT:

INSERT
INTO	Временная
SELECT	Вид, Блюдо, Рецепт
FROM	Блюда, Рецепты, Вид_блюд
WHERE	Блюда.БЛ = Рецепты.БЛ
AND	Блюда.В = Вид_блюд.В
UNION
SELECT	Вид, Блюдо, “???”
FROM	Блюда, Вид_блюд
WHERE	Блюда.В = Вид_блюд.В
AND	БЛ NOT IN
	(	SELECT	БЛ
		FROM	Рецепты);	

4.3.2 | Содержание | 4.4