Підвищує гнучкість запитів, забезпечує можливість запрошувати у користувача чисельні значення критеріїв відбору даних. Розташовується перед інструкцією 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. Вибрати прізвища клієнтів, найменування товарів, кількість проданих товарів, дату продажу.
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. Видати прізвища клієнтів, найменування товару і суму заплачених грошей за ці товари.
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 перевіряється наявність рядків в таблиці підзапиту( ця таблиця може містити довільне число стовпців).