Помощничек
Главная | Обратная связь


Археология
Архитектура
Астрономия
Аудит
Биология
Ботаника
Бухгалтерский учёт
Войное дело
Генетика
География
Геология
Дизайн
Искусство
История
Кино
Кулинария
Культура
Литература
Математика
Медицина
Металлургия
Мифология
Музыка
Психология
Религия
Спорт
Строительство
Техника
Транспорт
Туризм
Усадьба
Физика
Фотография
Химия
Экология
Электричество
Электроника
Энергетика

Пропозиція PARAMETERS (використання параметрів в запитах)



 

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

Формат запису:

 

PARAMETERS [Ім'я параметра] тип даних;

Допустимі типи даних в Jet SQL

Bit Логічний

Byte Байт

Currency Грошовий

DateTime Дата/час

Long Довге ціле

Short Ціле

Float З плаваючою крапкою(8 байт)

Real З плаваючою крапкою(4 байти)

Text Текстовий

 

20. Видати всю інформацію про заданого клієнта, знаючи його код.

PARAMETERS [введи код_клиента] Long;

SELECT *

FROM Клієнти

WHERE Код_клиента=[введи код_клиента];

Вибірка даних з декількох таблиць

 

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

 

21. Вибрати прізвища, імена клієнтів і кількість проданих товарів для них з вказівкою дати продажу.

SELECT Прізвище, Ім'я, Продано, Дата_продажи

FROM Клієнти, Продажи

WHERE Клієнти.Код_клиента=Продажи,код_клиента;

 

22. Вибрати прізвища клієнтів, найменування товарів, кількість проданих товарів, дату продажу.

SELECT Прізвище, Найменування, Продано, Дата_продажи

FROM Клієнти, Товари, Продажи

WHERE (Клієнти.Код_клиента=Продажи,код_клиента)

AND (Товари.Код_товара=Продажи,Код_товара);

 

23. Вибрати прізвища клієнтів, найменування товару і загальну кількість покупок цих товарів.

SELECT Прізвище, Найменування, SUM(Продано) AS [Кількість покупок]

FROM Клієнти, Товари, Продажи

WHERE (Клієнти.Код_клиента=Продажи,код_клиента)

AND (Товари.Код_товара=Продажи,Код_товара)

GROUP BY Прізвище, Найменування;

Пропозиція INNER JOIN (внутрішнє з'єднання)

 

Є альтернативним варіантом пропозицій FROM і WHERE для з'єднання таблиць по рівності:

SELECT Список полів

FROM Таблица1INNER JOIN Таблиця2

ON Умова з'єднання;

У результуючу таблицю потраплять тільки ті записи, які мають однакові значення в зв'язаних полях.

 

Для вибірки з 3-х таблиць використовується вкладений INNER JOIN:

SELECT Список полів

FROM Таблиця1 INNER JOIN (Таблиця2 INNER JOIN Таблиця3

ON Умова з'єднання Таблиці2 і таблиці3)

ON Умова з'єднання Таблиці1 і таблиці3;

 

 

Пропозиція LEFT JOIN (ліве з'єднання)

 

SELECT Список полів

FROM Таблиця1 LEFT JOIN Таблиця2

ON Умова з'єднання;

 

У результуючу таблицю входять всі рядки з таблиці1, а частини результуючих кортежів, для яких немає відповідних значень в таблиці2, доповнюються значеннями NULL(невизначено).

 

Пропозиція RIGHT JOIN (праве з'єднання)

 

SELECT Список полів

FROM Таблиця1 RIGHT JOIN Таблиця2

ON Умова з'єднання;

 

У результуючу таблицю входять всі рядки з таблиці2, а частини результуючих кортежів, для яких немає відповідних значень в таблиці1, доповнюються значеннями NULL(невизначено).

Пропозиції LEFT JOIN і RIGHT JOIN можуть бути вкладені в INNER JOIN, але не навпаки.

24. Видати прізвища клієнтів, найменування товару і суму заплачених грошей за ці товари.

SELECT прізвище, найменування, sum(продано*ціна) AS[Cумма]

FROM товари INNER JOIN (клієнти INNER JOIN продажі ON клієнти.код_клієнта = продажи.код_клієнта) ON товари.код_товара = продажи.код_товара

GROUP BY прізвище, найменування;

 

25. Вибрати список всіх товарів з вказівкою суми, на яку продані ці товари

SELECT найменування, sum(продано*ціна) AS [Сума]

FROM товари LEFT JOIN продажу ON товари.код_товара = продажи.код_товара

GROUP BY найменування;

 

У останніх двох запитах в пропозиції SELECT створені обчислювані поля. SQL дозволяє створювати такі поля в тексті запиту. У виразах застосовуються арифметичні і математичні операції.

 

 

Підпорядковані запити

 

Це SELECT - запити упроваджені в тіло іншого SELECT - запиту. Зовнішній оператор SELECT використовує результат виконання внутрішнього оператора для визначення змісту остаточного результату всієї операції. Внутрішні запити можуть бути поміщені в пропозиції WHERE і HAVING зовнішнього оператора SELECT - в цьому випадку вони одержують назву підзапитів або вкладених запитів. Крім того, внутрішні оператори SELECT можуть використовуватися в операторах INSERT, UPDATE, DELETE. Існує три типу підзапитів:

- скалярний підзапит; повертає єдине значення.

- строковий підзапит; повертає значення декількох стовпців таблиці, але у вигляді єдиного рядка.

- табличний підзапит; повертає значення одного або більше стовпців таблиці, розміщені в більш ніж одному рядку. Табличний підзапит може використовуватися скрізь, де допускається указувати таблицю - наприклад, як операнд предиката IN.

Правила запису:

1. Текст підзапиту записується в круглих дужках.

2. У підзапитах не можна використовувати пропозицію ORDER BY.

3. У основному запиті не можна використовувати BETWEEN.

4. Підзапити, що повертають більше одного запису, можуть використовуватися тільки з багатозначними функціями.

5. Якщо підзапит є одним з двох операндів, що беруть участь в операції порівняння, то запит указується в правій частині порівняння.

 

Приклади. Розглянемо відношення Співробітники (таб_номер, ФІО, оклад, номер_отдела)

 

1. Скласти список всіх співробітників, що мають оклад вище за середнє по підприємству.

SELECT ФІО

FROM Співробітники

WHERE Оклад>(SELECT AVG(оклад)

FROM співробітники);

 

2. Одержати список співробітників, одержуючих зарплату вище за хоч би одного співробітника відділу №1.

SELECT ФІО

FROM Співробітники

WHERE Оклад>ANY (SELECT оклад

FROM співробітники

WHERE номер_отдела=1);

 

3. Скласти список всіх співробітників, чия зарплата більше зарплати будь-якого співробітника отдела №2.

SELECT ФІО

FROM Співробітники

WHERE Оклад>ALL (SELECT оклад

FROM співробітники

WHERE номер_отдела=2);

 

З табличними підзапитами використовуються ключові слова EXISTS і NOT EXISTS. Результат їх обробки є логічним значенням TRUE або FALSE. Для ключового слова EXISTS результат рівний TRUE тільки в тому випадку, якщо в повертаному підзапитом результуючій таблиці присутній хоч би 1 рядок. Інакше - буде значення FALSE. Для NOT EXISTS - навпаки. Тобто за ключовими словами EXISTS і NOT EXISTS перевіряється наявність рядків в таблиці підзапиту( ця таблиця може містити довільне число стовпців).

 

 

 




Поиск по сайту:

©2015-2020 studopedya.ru Все права принадлежат авторам размещенных материалов.