|
Программирование >> Исключение дубликатов строк
Второе выражение
Рис. 6.13 Результат объединения двух предикатов типа выражение** в операторе OR Поскольку результат не True, то строка не будет выбрана. Если к тому же А = В не является True, то можно ожидать, что NOT (А = В) будет True. НЕТ! Это также будет Unknown. Рис. 6.14 поможет понять, почему это так. Предположим, что к базе данных обраш,аются со cлeдyюшм запросом:
Рис. 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
Когда предполагается, что набор результатов отображает неверную информацию, следует проверить все столбцы, используемые как критерий, на условие Nu Это даст возможность обработать все значения Null надлежащим образом, а затем можно снова выполнить исходный оператор SELECT. Например, если вы полагаете, что в наборе результатов могут быть пропущены несколько дипломированных адвокатов, можно выполнить следующий оператор SELECT: SELECT StfLastName, StfFirstName. Title FROM Staff WHERE Title IS NULL Если в столбце Title имеется значение Null, этот оператор SELECT выдаст набор результатов, содержащий имена всех штатных сотрудников, для которых в базе данных не указана должность. Теперь можно рассмотреть эти данные по обстановке, а затем возвратиться к исходному оператору SELECT. Проблема Null все еще не решена жюри. В главе 12 мы вновь встретимся со значениями Null при обсуждении операторов SELECT, которые суммируют данные.
|
© 2006 - 2024 pmbk.ru. Генерация страницы: 0
При копировании материалов приветствуются ссылки. |