Программирование >>  Исключение дубликатов строк 

1 ... 54 55 56 [ 57 ] 58 59 60 ... 152


Второе выражение

Истина (Строки выбираются)

Истина (Строки выбираются)

Истина (Строки выбираются)

Истина (Строки выбираются)

Ложь (Строки отвергаются)

Неиовестно

(Строки отвергаются)

Истина (Строки выбираются)

Неизвестно

(Строки отвергаются)

Неизвестно

(Строки отвергаются)

Рис. 6.13

Результат объединения двух предикатов типа выражение** в операторе OR

Поскольку результат не True, то строка не будет выбрана. Если к тому же А = В не является True, то можно ожидать, что NOT (А = В) будет True. НЕТ! Это также будет Unknown. Рис. 6.14 поможет понять, почему это так.

Предположим, что к базе данных обраш,аются со cлeдyюшм запросом:

(Выражение)

NOT (Выражение)

True

False

False

True

Unknown

Unknown

Рис. 6.14. Результат применения NOT

к значению True/False/Unknown

Let me see the names and phone numbers of King county residents whose last name is Hernandez .

( Показать имена и номера телефонов лиц, постоянно проэтвающих в округе Кинг, фамилия которых Hernandez .)

Преобразование:

Уточнение:

Select first name, last name, and phone number

from the customers table where the county name is *King

and the last name is Hernandez

(Выбрать имя, фамилию и номер телефона

из таблицы Клиенты , где название округа *Кинг

и фамилия Hernandez.

Select first name, last name, phone number from the customers table where the county name

= *King and the last name ts == Hernandez (Выбрать имя, фамилию, номер телефона из Клиенты , где графство = *Кинг и фамилия = Hernandez)



SQL SELECT CustFirstName, CustLastName, CustPhoneNumber

FROM Customers

WHERE CustLastName = Hernandez AND CustCounty = King

Для того чтобы строка была включена в набор результатов, она должна удовлетворять обоим условиям. Если название округа, либо фамилия имеют значение Null, база данных полностью пренебрегает этой строкой.

Рассмотрим следующий запрос:

Show те the names of all staff members who are graduate counselors or were hired on September 1, 1999 .

( Показать имена всех штатных сотрудников из таблицы Персонал , которые являются дипломированными адвокатами или приняты на работу 1 сентября 1999 .)

Преобразование: Select last name and first name from the staff table

where the title is graduate counselor or date hired is September 1,1999

(Выбрать фамилию и имя из таблицы Персонал , где должность дипломированный адвокат или дата приема на работу 1 сентября 1999)

Уточнение: Select last name апё first name from the staff table

where the title is = graduate counselor or date hired \s = September 1, 1909 1999-09-0Г (Выбрать фамилию и имя из Персонал , где должность = дипломированный адвокат или дата приема на работу = 1999-09=01)

SQL SELECT StfLastName, StfFirstName

FROM Staff

WHERE Title = Graduate Counselor OR DateHired = 1999-09-01

Можно подумать, что значения Null должны оказывать такое же влияние на условия, объединенные в OR, как и на условия, объединенные в AND, но на самом деле это не так. У строки все еще остается шанс, что она будет включена в набор результатов, пока она удовлетворяет любому из этих условий. Посмотрите еще раз на рис. 6.13. На основании значений Title (Должность) и DateHired (Дата принятия на работу) в таблице 6.2 представлено, как база данных определяет, заносить ли строку в набор результатов, когда предикаты объединяются с OR.



Таблица 6.2

Определепце набора результата и OR

Название должности

Значение DateHired

Результат

Дипломированный адвокат

1999-09-01

Строка включается в набор результатов, поскольку удовлетворяет обоим условиям.

Дипломированный адвокат

1999-11-15

Строка включается в набор результатов, поскольку удовлетворяет первому условию.

Секретарь учебного заведения

1999-09-01

Строка включается в набор результатов, поскольку удовлетворяет второму условию.

Дипломированный адвокат

Null

Строка включается в набор результатов, поскольку удовлетворяет первому условию.

Null

1999-09-01

Строка включается в набор результатов, поскольку удовлетворяет второму условию.

Null

Null

Строка исключается из набора результатов, поскольку не удовлетворяет ни одному из условий.

Когда предполагается, что набор результатов отображает неверную информацию, следует проверить все столбцы, используемые как критерий, на условие Nu Это даст возможность обработать все значения Null надлежащим образом, а затем можно снова выполнить исходный оператор SELECT. Например, если вы полагаете, что в наборе результатов могут быть пропущены несколько дипломированных адвокатов, можно выполнить следующий оператор SELECT:

SELECT StfLastName, StfFirstName. Title

FROM Staff

WHERE Title IS NULL

Если в столбце Title имеется значение Null, этот оператор SELECT выдаст набор результатов, содержащий имена всех штатных сотрудников, для которых в базе данных не указана должность. Теперь можно рассмотреть эти данные по обстановке, а затем возвратиться к исходному оператору SELECT.

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



1 ... 54 55 56 [ 57 ] 58 59 60 ... 152

© 2006 - 2024 pmbk.ru. Генерация страницы: 0
При копировании материалов приветствуются ссылки.
Яндекс.Метрика