русс | укр

Языки программирования

ПаскальСиАссемблерJavaMatlabPhpHtmlJavaScriptCSSC#DelphiТурбо Пролог

Компьютерные сетиСистемное программное обеспечениеИнформационные технологииПрограммирование

Все о программировании


Linux Unix Алгоритмические языки Аналоговые и гибридные вычислительные устройства Архитектура микроконтроллеров Введение в разработку распределенных информационных систем Введение в численные методы Дискретная математика Информационное обслуживание пользователей Информация и моделирование в управлении производством Компьютерная графика Математическое и компьютерное моделирование Моделирование Нейрокомпьютеры Проектирование программ диагностики компьютерных систем и сетей Проектирование системных программ Системы счисления Теория статистики Теория оптимизации Уроки AutoCAD 3D Уроки базы данных Access Уроки Orcad Цифровые автоматы Шпаргалки по компьютеру Шпаргалки по программированию Экспертные системы Элементы теории информации

Однотабличні запити


Дата добавления: 2015-07-09; просмотров: 866; Нарушение авторских прав


Вище нами розглянуті запити, які використовували як джерело даних тільки одну' таблицю даних - так звані однотабличні запити. Проте часто виникає необхідність у виборі інформації з декількох таблиць -одним з варіантів здійснення такого висновку є об'єднання результатів декількох запитів, що виконуються незалежно один від одного.

Для розміщення декількох запитів разом і об'єднання їх висновку використовують пропозицію UNION. Пропозиція UNION об'єднує висновок двох або більш SQL запитів в єдиний набір рядків і стовпців. Наприклад, для отримання списку всіх студентів і викладачів, прізвища яких укладені між буквами 'К' і 'С', можна скористатися запитом:

SELECT SFAM, SIMA, SOTCH FROM STUDENTS

WHERE SFAM BETWEEN 'K' AND 'C' UNION

SELECT TFAM, TIMA, TOTCH FROM TEACHERS WHERE TFAM BETWEEN 'К' AND 'С';

Результати цього запиту показані нижче:

Каеанко Віталій Володимирович
Костиркин Олег Володимирович

Познякова Любов Олексіївна

Котенко Анатолій Миколайович

Нагірний Євгеній Васильович

Поляків Анатолій Олексійович

Звідси можна зробити висновок, що записи, вибрані двома командами, виведені так. неначебто вона була одна. Природно, що заголовки стовпців виключені, тому що жоден із стовпців, виведених об'єднанням, не був витягнутий безпосередньо з тільки однієї таблиці, отже, всі ці стовпці висновку не мають ніяких імен. Зверніть увагу на те, що тільки останній запит закінчується крапкою з комою - відсутність крапки з комою дає зрозуміти SQL, що є ще один або більш запитів.

Коли два або більш запиту піддаються об'єднанню, їх стовпці висновку повинні бути сумісні для об'єднання, що нами вже розглядалося вище. Нагадаємо, що це означає для кожного запиту необхідність включення однакового числа стовпців в тому ж порядку, що і перший, другий, третій, і т. д., і при цьому повинна бути присутній сумісність типів. Наприклад, символьні поля повинні мати однакове число символів. Інше обмеження на сумісність - це коли порожні значення NULL заборонені в будь-якому стовпці об'єднання, тоді ці значення необхідно заборонити і для всіх відповідних стовпців в інших запитах об'єднання. Нарешті, не можна використовувати агрегатні функції в пропозиції SELECT запиту в об'єднанні.



Варто звернути увагу на той факт, що UNION автоматично виключатиме дублікати рядків з висновку. Якщо, наприклад, в таблиці STUDENTS з'явиться ще один студент з прізвищем Поляків, то запит

SELECT SFAM FROM STUDENTS

Поляків

Старова

Гріценко

Котенко

Нагірний

Поляків

Тут є дублювання значень SFAM = Поляків, тому що не вказано, щоб SQL усунув дублікати. Проте при використовуванні UNION в комбінації цього запиту з йому подібним в таблиці викладачів, надмірна інформація буде усунена.

SELECT SFAM

FROM STUDENTS UNION

SELECT TFAM FROM TEACHERS;

дає наступні результати без дублювання прізвища Поляків:

Поляків

Старова

Гріценко

Котенко

Нагірний

Никуліна

Костиркин

Казанко

Позднякова

Загарійчук

Іноді виникає необхідність вставляти константи і вирази в пропозиції SELECT, що використовуються з UNION, що є корисною можливістю. Очевидно, що константи і вирази, що використовуються, повинні зустрічати сумісні типи даних. Це властивість корисно, наприклад, щоб відобразити коментарі, вказуючі на те, який запит вивів даний рядок. Модифікуємо попередній запит таким чином:

 

SELECT 'Студент ' SFAM

FROM STUDENTS

UNION

SELECT 'Викладач'TFAM

FROM TEACHERS;

висновок цього запиту наступний:

Студент Поляків

Студент Гріценко

Студент Котенко

Студент Нагірний

Викладач Никуліна

Викладач Костиркин

Викладач Казанко

Викладач Позднякова

Викладач Загарійчук

Зверніть увагу на те, що виникла необхідність в додаванні додаткових пропусків в рядок 'Студент', щоб зробити її співпадаючою по довжині з рядком 'Викладач'.

Тепер необхідно звести наклеп того. що дані численних запитів виводитимуться в якомусь особливому порядку. Для цього можна використовувати пропозицію ORDER, щоб упорядкувати висновок з об'єднання, аналогічно тому, як це робиться в однотабличних запитах Наприклад, переглянемо останній запит у зв'язку з тим, щоб упорядкувати прізвища:

SELECT 'Студент' SFAM

FROM STUDENTS UNION

SELECT 'Викладач' TFAM

FROM TEACHERS ORDER 2 ASC;

Висновок цього запиту буде наступний:

Викладач Никуліна Студент Гріценко Викладач Загарійчук Викладач Казанко Викладач Костиркин Студент Котенко Студент Нагірний Викладач Позднякова Студент Поляків Студент Старова Допускається упорядковувати висновок за допомогою декількох полів, одне усередині іншого і указувати фрази ASC або DESC для кожного, так само. як це робиться для одиночних запитів. Необхідно помітити, що номер 2 в пропозиції ORDER указує, який стовпець з пропозиції SELECT буде впорядкований, оскільки стовпці об'єднання - це стовпці висновку, а значить, вони не мають імен і повинні визначатися по номеру.

Крім того, при виконанні об'єднання більш ніж двох запитів, можна використовувати круглі дужки для того, щоб визначити порядок оцінки. Тобто замість просто запиту query А UNION query В UNION query З; можна вказати (query А UNION query В) UNION query З; або query А UNION (query В UNION query З); Це може принципово вплинути на результати запиту, оскільки об'єднання здійснюється спочатку усередині дужок, а потім - зовні. У такий спосіб, наприклад, запити можуть бути скомбіновані для видалення одних дублікатів і залишення інших.



<== предыдущая лекция | следующая лекция ==>
 | 


Карта сайта Карта сайта укр


Уроки php mysql Программирование

Онлайн система счисления Калькулятор онлайн обычный Инженерный калькулятор онлайн Замена русских букв на английские для вебмастеров Замена русских букв на английские

Аппаратное и программное обеспечение Графика и компьютерная сфера Интегрированная геоинформационная система Интернет Компьютер Комплектующие компьютера Лекции Методы и средства измерений неэлектрических величин Обслуживание компьютерных и периферийных устройств Операционные системы Параллельное программирование Проектирование электронных средств Периферийные устройства Полезные ресурсы для программистов Программы для программистов Статьи для программистов Cтруктура и организация данных


 


Не нашли то, что искали? Google вам в помощь!

 
 

© life-prog.ru При использовании материалов прямая ссылка на сайт обязательна.

Генерация страницы за: 0.413 сек.