|
Программирование >> Исключение дубликатов строк
Оператор SELECT ИМИ столоцо ИМИ тоблицы Рис. 4.4. Синтаксис простого оператора SELECT Удалите вычеркнутые слова, и вы получите завершенный оператор SELECT: SELECT City FROM Customers Эту методику из трех этапов можно использовать к любому запросу, с которым об-раш,аются к базе данных. Фактически эта методика применяется в остальной части книги и рекомендуется для использования при построении таких операторов. Однако в конечном счете эти этапы можно объединить в одну неразрывную операцию, и вы сможете это сделать, когда освоитесь с написанием операторов SELECT. Начиная изучать использование SQL, вы будете работать в основном со столбцами и таблицами. Синтаксическая диаграмма на рис. 4.4 отражает этот факт, используя имя столбца в условии SELECT и имя таблицы в условии FROM. В сле-дуюш,ей главе мы покажем, как использовать другие элементы в этих условиях для создания более сложных операторов SELECT. Запрос, использованный в предьшущем примере, является относительно простым. Нам легко далось как его переопределение в переводимое утверждение, так и идентификация имен столбцов, которые были представлены в операторе. Но что если запрос не является простым и легким для преобразования и если сложно идентифицировать столбцы, необходимые для условия SELECT. Самый легкий способ - это уточнить свой запрос и сделать его более конкретным. Например, запрос типа Представить информацию о наших клиентах можно видоизменить и конкретизировать: Привести в списке имя, город и телефонный номер каждого нашего клиента . Если уточнение запроса не решает проблемы, есть еще два варианта действий. При первом варианте необходимо установить, содержит ли таблица, определенная в условии FROM оператора SELECT, все имена столбцов, которые могут помочь прояснить запрос и облегчить определение преобразуемого утверждения. Вторым вариантом является более тщательная проверка запроса на предмет того, подразумевает ли слово или фраза, которые в нем содержатся, какие-либо имена столбцов. Можно ли воспользоваться любым или обоими вариантами - зависит от самого запроса. Просто помните, что имеются доступные методы, когда окажется затруднительным определить преобразуемое утверждение. Рассмотрим на примере каждый метод и его применение в типичном сценарии. Чтобы проиллюстрировать первый метод, предположим, что вы пытаетесь преобразовать следующий запрос: 7 need the names and address of all our employees , ( Мне нужны имена и адреса всех наших сотрудников .) EmployeelD EmpLastName EmpFlrstName EmpStfeetAddress EmpCity EmpStale EmpZipCode EmpPhoneNumber Рис. 4.5. Структура таблицы Employees Внешне он выглядит достаточно простым. Но при более пристальном рассмотрении можно заметить одну небольшую проблему. Хотя для преобразования утверждения можно определить имя требуемой таблицы (Employees), в запросе нет ничего, что могло бы помочь определить столбцы, необходимые для условия SELECT. Слова имена и адреса имеются в запросе, но они являются терминами общего характера. Эту проблему можно разрешить, повторно просмотрев таблицу, идентифицированную в запросе, и определив, содержит ли она какие-либо столбцы, которыми можно было бы заменить эти термины. Если да - используйте имена столбцов в преобразуемом утверждении. (Можно использовать обобщенные версий имен столбцов, если это поможет более ясно представить утверждение. Однако в синтаксисе SQL требуется использовать реальные имена столбцов.) В данном случае поищите в таблице Employees имена столбцов, которые могут использоваться вместо слов имена и адреса . Используйте таблииу Employees, показанную на рис. 4.5, и определите, можно ли использовать какой-либо из ее столбцов. Несомненно, из этой таблицы будут использоваться шесть столбцов. EmpFlrstName и EmpLastName оба заменяют слово имена в запросе, тогда как EmpStreet-Address, EmpCity, EmpState и EmpZipCode заменяют адреса . Теперь примените весь процесс преобразования к запросу, который для удобства приводится повторно. (Будем использовать общие формы имен столбцов д;1я преобразуемого утверждения и реальные имена столбцов в синтаксисе SQL.) 7 need the names and addresses of all our employees . ( Мне нужны имена и адреса всех наших сотрудников ,) Преобразование: Select first name, last name, street address, city, and zip code from the employees table (Выбрать имя, фамилию, улииу, город, штат и почтовый код из таблицы.Етр1оуее5) Select first name, last name, street address, city, and zip code from ttte employees table (Выбрать имя, фамилию, улииу, город, штат, почтовый код из Employees) SELECT EmpFirstName, EmpLastName, EmpStreet, EmpCity, EmpState, EmpZipCode FROM Employees. state. Уточнение: state. Внимание! В этом примере явно показано, как использовать составные столбцы в условии SELECT (подробнее см. ниже). Следующий пример иллюстрирует второй метод, который включает поиск подразумеваемых столбцов в запросе. Предположим, вы пытаетесь преобразовать следующий запрос: What kind of classes do we currently offer? ( Какие виды учебных курсов мы проводим в настоящее время? ) На первый взгляд, определение преобразуемого утвер>едения из этого запроса может показаться затруднительным. В запросе отсутствуют имена столбцов, а при отсутствии хотя бы одного элемента для выбора невозможно создать полное преобразуемое утвервдение. Что же теперь делать? Следует более внимательно рассмотреть каждое слова в запросе и попытаться определить, имеется ли какое-либо имя, которое подразумевает имя столбца из таблицы Classes (Учебные курсы). Можно ли найти такое слово? В данном случае слово виды может подразумевать имя столбца в таблице Classes. Почему? Потому что тип предметов также может рассматриваться как категория класса. Если в таблице Classes имеется столбец такой категории, то у вас имеется имя столбца, которое необходимо для преобразования утверждения, и, как предполагается, оператор SELECT. Предположим, что в таблице Classes имеется столбец категории, и снова проведем процесс преобразования в три этапа. Какие виды учебных курсов мы проводим в настоящее время? Преобразование: Select category from the classes table (Выбрать категории из таблицы Classes) Уточнение: Select category from 4he classes table (Выбрать категории из Classes ) SQL SELECT Category FROM Classes Как показано в примере, этот метод включает использование синонимов для замены определенных слов или фраз запроса. Если установлено слово или фраза, под которыми может подразумеваться имя столбца, попытайтесь заменить его на синоним, который может действительно идентифицировать столбец, существующий в базе данных. Если первый пришедший на ум синоним не подходит, попробуйте другой и продолжайте искать до тех пор, пока не найдется синоним, который идентифицирует имя столбца, либо пока вы не решите, что ни исходное слово, ни какой-либо его синоним не представляют имя столбца. Внимание! Все имена столбцов и таблиц, используемые в примерах по синтаксису SQL, взяты из учебных баз данных в приложении В (если не указано иное). Это соглашение применяется ко всем примерам в остальной части книги.
|
© 2006 - 2024 pmbk.ru. Генерация страницы: 0
При копировании материалов приветствуются ссылки. |