Студопедия
Случайная страница | ТОМ-1 | ТОМ-2 | ТОМ-3
АрхитектураБиологияГеографияДругоеИностранные языки
ИнформатикаИсторияКультураЛитератураМатематика
МедицинаМеханикаОбразованиеОхрана трудаПедагогика
ПолитикаПравоПрограммированиеПсихологияРелигия
СоциологияСпортСтроительствоФизикаФилософия
ФинансыХимияЭкологияЭкономикаЭлектроника

Что такое условная логика?

Подзапросы в условиях фильтрации | Подзапросы как генераторы выражений | Gt; SUM(a.avail_balance) tot_deposits _> FROM account a | Краткий обзор подзапросов | Упражнения | Внешние соединения | Сравнение левосторонних и правосторонних внешних соединений | Трехсторонние внешние соединения | Рекурсивные внешние соединения | Перекрестные соединения |


Читайте также:
  1. Lt;question> Что такое резюме?
  2. Lt;question>Что такое микротема?
  3. Lt;question>Что такое норма литературного языка?
  4. Lt;question>Что такое «тезис»?
  5. quot;Что такое дружба и мой взгляд на дружбу".
  6. А, да-да-да, было такое.
  7. Абсолютная и условная сходимость

 

Условная логика – это просто способность выбирать одно из направле_ ний выполнения программы. Например, при запросе информации о клиенте может потребоваться в зависимости от типа клиента извлечь столбцы fname/lname таблицы individual или столбец name таблицы busi_ ness. С помощью внешних соединений можно было бы выбрать обе строки и дать возможность вызывающему определить, какую из них использовать:

 

mysql> SELECT c.cust_id, c.fed_id, c.cust_type_cd,
_> CONCAT(i.fname, ' ', i.lname) indiv_name,
_> b.name business_name
_> FROM customer c LEFT OUTER JOIN individual i
_> ON c.cust_id = i.cust_id
_> LEFT OUTER JOIN business b
_> ON c.cust_id = b.cust_id;

 

+________+____________+_____________+________________+_______________________+ | cust_id | fed_id | cust_type_cd | indiv_name | business_name | +________+____________+_____________+________________+_______________________+

| 1 | 111_11_1111 | I | James Hadley | NULL |
| 2 | 222_22_2222 | I | Susan Tingley | NULL |
| 3 | 333_33_3333 | I | Frank Tucker | NULL |
| 4 | 444_44_4444 | I | John Hayward | NULL |
| 5 | 555_55_5555 | I | Charles Frasier | NULL |

 

Что такое условная логика?        
           
|   | 666_66_6666 | I | John Spencer | NULL |
|   | 777_77_7777 | I | Margaret Young | NULL |
|   | 888_88_8888 | I | Louis Blake | NULL |
|   | 999_99_9999 | I | Richard Farley | NULL |
|   | 04_1111111 | B | NULL | Chilton Engineering |
|   | 04_2222222 | B | NULL | Northeast Cooling Inc. |
|   | 04_3333333 | B | NULL | Superior Auto Body |
|   | 04_4444444 | B | NULL | AAA Insurance Inc. |

 

+________+____________+_____________+________________+_______________________+ 13 rows in set (0.13 sec)

 

Вызывающий может взглянуть на значение столбца cust_type_cd и вы_ брать, какой столбец использовать – indiv_name или business_name. Од_ нако вместо этого можно было бы применить условную логику, вос_ пользовавшись выражением case, чтобы определить тип клиента и воз_ вратить соответствующую строку.

 

mysql> SELECT c.cust_id, c.fed_id,
_> CASE
_> WHEN c.cust_type_cd = 'I'
_> THEN CONCAT(i.fname, ' ', i.lname)
_> WHEN c.cust_type_cd = 'B'
_> THEN b.name
_> ELSE 'Unknown'
_> END name
_> FROM customer c LEFT OUTER JOIN individual i
_> ON c.cust_id = i.cust_id
_> LEFT OUTER JOIN business b
_> ON c.cust_id = b.cust_id;

 

+_________+_____________+________________________+

 

| cust_id | fed_id | name |

 

+_________+_____________+________________________+

 

|   | 111_11_1111 | James Hadley |
|   | 222_22_2222 | Susan Tingley |
|   | 333_33_3333 | Frank Tucker |
|   | 444_44_4444 | John Hayward |
|   | 555_55_5555 | Charles Frasier |
|   | 666_66_6666 | John Spencer |
|   | 777_77_7777 | Margaret Young |
|   | 888_88_8888 | Louis Blake |
|   | 999_99_9999 | Richard Farley |
|   | 04_1111111 | Chilton Engineering |

 

| 11 | 04_2222222 | Northeast Cooling Inc. |

 

|   | 04_3333333 | Superior Auto Body |
|   | 04_4444444 | AAA Insurance Inc. |

 

+_________+_____________+________________________+ 13 rows in set (0.00 sec)


 

Эта версия запроса возвращает один столбец name. Он формируется выра_ жением case, начинающимся во второй строке запроса, которое в дан_


 

218 Глава 11. Условная логика

ном случае проверяет значение столбца cust_type_cd и возвращает имя/ фамилию физического лица или название фирмы.

 


Дата добавления: 2015-08-17; просмотров: 46 | Нарушение авторских прав


<== предыдущая страница | следующая страница ==>
Естественные соединения| Выражение case

mybiblioteka.su - 2015-2024 год. (0.006 сек.)