|
Программирование >> Исключение дубликатов строк
Расширение области рассмотрений В операторе SELECT несколько столбцов можно извлечь так же просто, как и один столбец. Перечислите имена столбцов, которые вы хотите использовать в условии SELECT, и отделите каждое имя в этом списке запятой. В синтаксической диаграмме, показанной на рис. 4.6, о SELECT-имястоАбцо -I--1 опция использования более одного столбца указывается линией, распо-........... ложенной под имя столбца. Запятая Рис. 4.6. Отображение в середине линии разделяет имена нескольких столбиов в условии SELECT столбцов, которые вы хотите исполь- зовать в условии SELECT. Опция использования нескольких столбцов в операторе SELECT предоставляет средства ответов на вопросы, подобные следующему: Show те а current list of our employees and their phone number . ( Показать текущий список наших сотрудников и номера их телефонов .) Преобразование: Select the last name, first name and phone number of all our employees from the employees table (Выбрать фамилию, имя и номер телефона всех наших служащих из таблицы служащих) Уточнение: Select the last name, first name afie phone number of all our employees from the employees table (Выбрать имя, фамилия, номер телефона из Служащие ) SQL SELECT EmpLastName, EmpFirstName, EmpPhoneNumber FROM Employees What are the names and prices of the products we carry, and under what cathegory is each item listed? ( Как называются и сколько стоят перевозимые нами продукты, и с какой категорией указывается каждая его позиция в перечне? ) Преобразование: Select the name, price, and category of every product from the product table (Выбрать наименование, цену и категорию каждого продукта из таблицы продуктов) Уточнение: Select the name, price, category of every product from the products tabile (Выбрать наименование, цену, категорию из Продукты ) SQL SELECT ProductName, Retail Price, Category FROM Products Вы добьетесь преимуществ, рассматривая широкий спектр информации при работе с несколькими столбцами в операторе SELECT. Кстати, последовательность столбцов в условии SELECT не важна - они могут быть перечислены в любом порядке. Это обеспечивает гибкость при просмотре одной и той же информации множеством способов. Предположим, вы работаете с таблицей, представленной на рис. 4.7, и хотите обратиться к базе данных со следующим запросом: Subjects SubjectID CategorylD SubJectCode SubjectName SubjectDescription PK FK Рис. 4.7. Структура таблицы Subjects Show me a list of subjects, the categoty each belong to, and the code we use in our catalog. But rd like to see the name first, followed by the category and then the code . ( Показать список тем, категорию, к которой каждая из них принадлежит, и код, используемый в нашем каталоге. Но мне хотелось бы видеть вначале наименование, потом категорию, а затем код .) Вы все еще можете преобразовать этот запрос в соответствующий оператор SELECT, даже если хотите видеть столбцы в определенном порядке. Просто перечислите имена столбцов в указанном порядке, когд определяете преобразуемое утверждение. Далее показан процесс преобразования этого запроса в оператор SELECT: Преобразование: Select the subject name, category ID, and subject code from the subjects table (Выбрать название темы, идентификатор категории и код темы из таблицы Темы ) Select the subject name, category ID, atte subject code from the subjects table (Выбрать название темы, идентификатор категории, код темы из Темы ) Количество столбцов, которые можно определить в условии SELECT, не ограничено. Фактически можно перечислить все столбцы из таблицы источника. В следующем примере приведен оператор SELECT, используемый для определения всех столбцов из таблицы Subjects на рис. 4.7: Уточнение: SELECT SubjectID, CategorylD, SubjectCode, SubjectName, SubjectDescription FROM Subjects Когда определяются все столбцы из таблицы источника, а в ней имеется множество столбцов, придется изрядно поупражнять пальцы на клавиатуре! К счастью. SELECT имястолбца Рис. 4.8. Синтаксическая диаграмма, показывающая использование звездочки для сокращения стандарт SQL разрешает применить звездочку как сокраш,енное обозначение для суш,ественного укорачивания оператора. Синтаксическая диаграмма на рис. 4.8 показывает использование звездочки как альтернативы списку столбцов в условии SELECT. Поместите звездочку сразу после условия SELECT, когда нужно определить все столбцы из исходной таблицы в условии FROM. Например, так выглядит пред-шествуюший оператор SELECT при использовании сокраш,ения: SELECT * FROM Subjects При использовании этого оператора печатать нужно намного меньше! Однако при использовании данного способа возникает один вопрос. Звездочка представляет все столбцы, суш,ествуюш,ие в текущий момент в исходной таблице, а добавление или удаление столбцов оказывает влияние на то, что вы видите в наборе результата оператора SELECT. (Как ни странно, стандарт SQL утверждает, что добавление или удаление столбцов не должно оказывать влияния на набор результатов.) Этот вопрос важен только тогда, когда необходимо постоянно видеть те же столбцы в наборе результатов. Когда в условии SELECT используется звездочка, СУБД не предупредит об удалении столбцов из исходной таблицы, но выдаст предупреждение, если не сможет найти явно указанный столбец. Хотя это не вызывает реальных проблем, это будет важно при углублении в мир программирования на SQL. Наше эмпирическое правило состоит в следуюш,ем: используйте звездочку только тогда, когда необходимо создать сляпанный наспех запрос, чтобы увидеть всю информацию в указанной таблице. В противном случае определите все столбцы, необходимые для запроса. В конечном итоге запрос возвратит точно ту информацию, которая требуется, и будет в большей степени самодокументированным. Рассмотренные до сих пор примеры основывались на простых запросах, для которых требуются столбцы только из одной таблицы. Работа с более сложными запросами, для которых требуются столбцы из нескольких таблиц, изучается в части 1П. Исключение дубликатов строк При работе с операторами SELECT вы неизбежно столкнетесь в наборах результатов с повторяюш,имися строками. Поэтому используйте ключевое слово DISTINCT в своем операторе SELECT, и набор результатов не будет содержать повторяющихся строк. На рис. 4.9 показана синтаксическая диаграмма для ключевого слова DISTINCT.
|
© 2006 - 2024 pmbk.ru. Генерация страницы: 0.001
При копировании материалов приветствуются ссылки. |