Заглавная страница Избранные статьи Случайная статья Познавательные статьи Новые добавления Обратная связь FAQ Написать работу КАТЕГОРИИ: АрхеологияБиология Генетика География Информатика История Логика Маркетинг Математика Менеджмент Механика Педагогика Религия Социология Технологии Физика Философия Финансы Химия Экология ТОП 10 на сайте Приготовление дезинфицирующих растворов различной концентрацииТехника нижней прямой подачи мяча. Франко-прусская война (причины и последствия) Организация работы процедурного кабинета Смысловое и механическое запоминание, их место и роль в усвоении знаний Коммуникативные барьеры и пути их преодоления Обработка изделий медицинского назначения многократного применения Образцы текста публицистического стиля Четыре типа изменения баланса Задачи с ответами для Всероссийской олимпиады по праву Мы поможем в написании ваших работ! ЗНАЕТЕ ЛИ ВЫ?
Влияние общества на человека
Приготовление дезинфицирующих растворов различной концентрации Практические работы по географии для 6 класса Организация работы процедурного кабинета Изменения в неживой природе осенью Уборка процедурного кабинета Сольфеджио. Все правила по сольфеджио Балочные системы. Определение реакций опор и моментов защемления |
Выборка данных из нескольких таблицСодержание книги
Поиск на нашем сайте
Большая часть запросов обращается не к одной, а нескольким таблицам, перечень которых и условия их соединения указываются в предложении FROM. Синтаксис предложения FROM: FROM <первая таблица> [[AS] <псевдоним>] <тип объединения> <вторая таблица>[[AS] <псевдоним>] [ON <условие объединения>] Типы объединения приведены ниже в таблице. Присвоение псевдонима таблице способствует уменьшению кода и улучшает восприятия текста запроса. Псевдоним должен быть уникален в рамках одного запроса. Следует учесть и то, что после того, как был объявлен псевдоним, SQL Server 2000 перестает воспринимать действительное имя таблицы в рамках данного запроса. Один и тот же псевдоним может быть присвоен различным таблицам в запросе и подзапросе. Однако, стремясь к совершенному коду надо отдавать себе отчет насколько это целесообразно. Существует несколько способов соединения таблиц (см.Таблица 12), наиболее применяемый способ INNER JOIN, который также может быть реализован и с помощью предложения WHERE. В предложении FROM должны быть указаны все таблицы, участвующие в запросе, даже если данные из той или иной таблицы не обозначены в предложении SELECT. Таблица 12
Продолжение таблицы
Пример 43 Задача. Вывести списки студентов с указанием названий групп, в которых они обучаются. Решение. SELECT NameGroup,NRecordBook,STname FROM SGroup SG INNER JOIN Student St ON SG.IDGroup=St.IDGroup Результат реализации запроса:
Пример 44 Задача. Вывести названия групп и список студентов, которые в них зачислены. Здесь подразумевается, что имеют место группы, в которые еще не были записаны студенты. Решение. SELECT NameGroup,NRecordBook,STname FROM SGroup SG LEFT OUTER JOIN Student St ON SG.IDGroup=St.IDGroup или SELECT NameGroup,NRecordBook,STname FROM Student St RIGHT OUTER JOIN SGroup SG ON St.IDGroup =SG.IDGroup Результат реализации запроса:
Пример 45 Задача. Вывести данные об успеваемости студентов. Решение. Данные об успеваемости содержатся в таблице Progress, однако там информация хранится в закодированном виде. Чтобы сделать необходимые данные доступными и понятными, следует выполнить соединение этой таблицы Progress с таблицами Subject, Report, Student, Teacher. select StName ФИО, Student.NRecordBook [№ зачётки], NameReport[Вид отчётности],NameSubject [Название предмета], TeacherName [Преподаватель], Mark Оценка from Progress join Student ON Student.NRecordBook=Progress.NRecordBook join Report ON Progress.IDReport=Report.IDReport join Subject ON Progress.IDSubject =Subject.IDSubject join teacher ON Progress.PIN=teacher.PIN Результат реализации запроса: Пример 46 Задача. Вывести номера зачёток и фамилии студентов из отношения Progress.
SELECT NRecordBook, StName ФИО FROM Student, Progress WHERE Student. NRecordBook = Progress. NRecordBook Результат реализации запроса: Ambiguous column name 'NRecordBook'. Будет выдано сообщение об ошибке, так как атрибут NRecordBook входит в схемы двух отношений и необходимо конкретизировать, из какого отношения выбирается предложением SELECT атрибут NRecordBook. Пример 47 Задача. Вывести номера зачёток и фамилии студентов из отношения Progress.
SELECT Student.NRecordBook, StName ФИО FROM Student, Progress Будет выведено 36 строк, а сообщение об ошибке не будет выведено. Возможно, результаты будут корректны, если вы хотели выполнить декартово соединение. В противном случае вы получите таблицу содержащее количество записей, равное произведению количества записей первой таблицы на количество записей второй, потому что не было указано условие соединения таблиц. Пример 48 Задача. Вывести номера зачёток и фамилии студентов из отношения Progress.
SELECT S.NRecordBook, StName ФИО FROM Student S,Progress P WHERE Student. NRecordBook = Progress. NRecordBook Результат реализации запроса: Server: Msg 107 The column prefix 'Student' does not match with a table name or alias name used in the query. Server: Msg 107The column prefix 'Progress' does not match with a table name or alias name used in the query. После присвоения таблицам псевдонимов была попытка использовать действительные имена таблиц. В большинстве случаев мало кого интересует все содержимое таблиц. Чаще всего при запросе отбирается множество записей, удовлетворяющих тому или иному условию. Реализация оператора выбора осуществляется в SQL Server 2000 посредством применения предложения WHERE. Предложение WHERE позволяет задать критерии отбора строк из таблиц.
|
|||||||||||||||||||||||||
Последнее изменение этой страницы: 2016-07-16; просмотров: 248; Нарушение авторского права страницы; Мы поможем в написании вашей работы! infopedia.su Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Обратная связь - 18.191.192.113 (0.006 с.) |