220
Глава 11. Условная логика
| 11 | 042222222 | Northeast Cooling Inc. |
| 12 | 043333333 | Superior Auto Body |
| 13 | 044444444 | AAA Insurance Inc. |
++++
13 rows in set (0.01 sec)
В этом варианте запроса в блок
from
включена только таблица
customer
и соответствующее имя для каждого
клиента получается с помощью
связанного подзапроса. Эта версия мне нравится больше той, где при
меняются внешние соединения, поскольку здесь сервер считывает
данные таблицы
individual
и
business
только в
случае необходимости,
а не соединяет все три таблицы.
Простые выражения case
Простое выражение
case
(
simple case expression
) очень похоже на вы
ражение
case
с
перебором вариантов, но
несколько менее функцио
нально. Вот его синтаксис:
CASE V0
WHEN V1 THEN E1
WHEN V2 THEN E2
...
WHEN VN THEN EN
[ELSE ED]
END
В этом описании
V0
представляет значение, а символы
V1
,
V2
, …,
VN
–
значения, сравниваемые с
V0
.
Символы
E1
,
E2
, …,
EN
представляют вы
ражения, возвращаемые выражением case, а
ED
– выражение, которое
должно быть возвращено, если ни одно из значений набора
V1
,
V2
, …,
VN
не
соответствует значению
V0
.
Вот пример простого выражения
case
:
CASE customer.cust_type_cd
WHEN 'I' THEN
(SELECT CONCAT(i.fname, ' ', i.lname)
FROM individual I
WHERE i.cust_id = customer.cust_id)
WHEN 'B' THEN
(SELECT b.name
FROM business b
WHERE b.cust_id = customer.cust_id)
ELSE 'Unknown Customer Type'
END
Простые выражения
case
менее функциональны,
чем выражения
case
с перебором вариантов, потому что в них нельзя задать собственные ус
ловия; в них просто используются условия равенства. Чтобы понять,
что имеется в виду, рассмотрим выражение
case
с перебором вариантов,
логика которого аналогична предыдущему простому выражению
case
.
Примеры выражений case
221
CASE
WHEN customer.cust_type_cd = 'I' THEN
(SELECT CONCAT(i.fname, ' ', i.lname)
FROM individual I
WHERE i.cust_id = customer.cust_id)
WHEN customer.cust_type_cd = 'B' THEN
(SELECT b.name
FROM business b
WHERE b.cust_id = customer.cust_id)
ELSE 'Unknown Customer Type'
END
Выражения
case
с перебором вариантов позволяют создавать условия
вхождения в
диапазон, условия неравенства и составные условия, ис
пользующие
and
/
or
/
not
, поэтому я бы рекомендовал применять выраже
ния
case
с перебором вариантов во всех случаях, кроме самых простых.
Достарыңызбен бөлісу: