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

Mysql> SELECT emp_id, fname, lname, start_date, title _> FROM employee

Банковская схема | Механика запроса | Блок Назначение | Блок select | Mysql> SELECT name | Псевдонимы столбцов | Уничтожение дубликатов | Таблицы, формируемые подзапросом | Представления | Gt; employee.lname, department.name dept_name |


Читайте также:
  1. Aufrisszone ~~> Ort wo man mit hoher WahrscheinlichkeiteinenFreund / eine Freundin kennen lernen kann
  2. Burnen ~~> attraktiv. bewundernswert,cool
  3. Dönern~~> eine Blähung haben
  4. Faker ~~> Simulant
  5. Gesichtselfmeter ~~> unattraktives Gesicht
  6. Gt; employee.lname, department.name dept_name
  7. Gt; FROM employee

_> WHERE title = 'Head Teller';

 

+________+_________+_________+____________+_____________+ | emp_id | fname | lname | start_date | title | +________+_________+_________+____________+_____________+

|   | Helen | Fleming | 2004_03_17 | Head Teller |
|   | Paula | Roberts | 2002_07_27 | Head Teller |
|   | John | Blake | 2000_05_11 | Head Teller |
|   | Theresa | Markham | 2001_03_15 | Head Teller |

 

+________+_________+_________+____________+_____________+ 4 rows in set (0.00 sec)

 

В данном случае блоком where были отсеяны 14 из 18 строк. Этот блок where содержит всего одно условие фильтрации (filter condition), но этих условий может быть столько, сколько потребуется. Условия разделяют_ ся с помощью таких операторов, как and, or и not (подробно блок where и условия фильтрации обсуждаются в главе 4). Вот расширенный вари_ ант предыдущего запроса со вторым условием – должны быть включе_ ны только сотрудники, принятые на работу после 1 января 2002 года:


 

    Глава 3. Азбука запросов
   
mysql> SELECT emp_id, fname, lname, start_date, title
_> FROM employee
_> WHERE title = 'Head Teller'
_> AND start_date > '2002_01_01';

 

+________+_______+_________+____________+_____________+ | emp_id | fname | lname | start_date | title | +________+_______+_________+____________+_____________+ | 6 | Helen | Fleming | 2004_03_17 | Head Teller | | 10 | Paula | Roberts | 2002_07_27 | Head Teller | +________+_______+_________+____________+_____________+ 2 rows in set (0.00 sec)

 

По первому условию (title = 'Head Teller') было отфильтровано 14 из 18 строк, а по второму (start_date > '2002_01_01') – еще 2. В итоге в резуль_ тирующем наборе осталось 2 строки. Давайте посмотрим, что произой_ дет, если заменить разделяющий условия оператор and оператором or:

 

mysql> SELECT emp_id, fname, lname, start_date, title
_> FROM employee
_> WHERE title = 'Head Teller'
_> OR start_date > '2002_01_01';

 

+________+__________+___________+____________+____________________+ | emp_id | fname | lname | start_date | title | +________+__________+___________+____________+____________________+

|   | Susan | Barker | 2002_09_12 | Vice President |
|   | Susan | Hawthorne | 2002_04_24 | Operations Manager |
|   | John | Gooding | 2003_11_14 | Loan Manager |
|   | Helen | Fleming | 2004_03_17 | Head Teller |
|   | Chris | Tucker | 2004_09_15 | Teller |
|   | Sarah | Parker | 2002_12_02 | Teller |
|   | Jane | Grossman | 2002_05_03 | Teller |
|   | Paula | Roberts | 2002_07_27 | Head Teller |
|   | Samantha | Jameson | 2003_01_08 | Teller |
|   | John | Blake | 2000_05_11 | Head Teller |
|   | Cindy | Mason | 2002_08_09 | Teller |
|   | Frank | Portman | 2003_04_01 | Teller |
|   | Theresa | Markham | 2001_03_15 | Head Teller |
|   | Beth | Fowler | 2002_06_29 | Teller |
|   | Rick | Tulman | 2002_12_12 | Teller |

 

+________+__________+___________+____________+____________________+ 15 rows in set (0.00 sec)

 

Посмотрев на выходные данные, можно увидеть, что в результирую_ щий набор включены все четыре старших операциониста (Head Tel_ ler), а также все остальные сотрудники, приступившие к работе в бан_ ке после 1 января 2002 года. Для 15 из 18 сотрудников из таблицы employee выполняется по крайней мере одно из двух условий. Таким образом, чтобы строка попала в результирующий набор, когда условия разделяются оператором and, для нее должны выполняться все усло_ вия; а при использовании оператора or достаточно, чтобы выполня_ лось только одно из условий.


 

Блоки group by и having  
   

 

А как быть, если вам нужно задействовать в блоке where оба оператора – and и or? Рад, что спросили. Необходимо сгруппировать условия с по_ мощью круглых скобок. Следующий запрос составлен так, что в ре_ зультирующий набор должны попасть только те сотрудники, которые являются старшими операционистами (Head Teller) и начали работать в компании позже 1 января 2002 года, или простые операционисты (Tel_ ler), начавшие работать после 1 января 2003 года:

 


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


<== предыдущая страница | следующая страница ==>
Блок where| Блоки group by и having

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