Изучаем sql


SELECT c.cust_id, c.cust_type_cd, c.city



Pdf көрінісі
бет160/261
Дата28.07.2022
өлшемі1,6 Mb.
#147825
1   ...   156   157   158   159   160   161   162   163   ...   261
Байланысты:
Изучаем SQL ( PDFDrive )

SELECT c.cust_id, c.cust_type_cd, c.city
> FROM customer c
> WHERE (SELECT SUM(a.avail_balance)
> FROM account a
> WHERE a.cust_id = c.cust_id)
> BETWEEN 5000 AND 10000;
++++
| cust_id | cust_type_cd | city |
++++
| 4 | I | Waltham |
| 7 | I | Wilmington |
| 11 | B | Wilmington |
++++
3 rows in set (0.02 sec)
Этот вариант приведенного ранее запроса находит всех клиентов, чей
общий доступный остаток по всем счетам находится в диапазоне от
5000 до 10 000 долларов. И снова связанный подзапрос выполняется
13 раз (по разу для каждой строки), и каждое выполнение подзапроса
возвращает общий остаток по счетам данного клиента.
В конце предыдущего раздела было продемонстрировано, как прове
рять доступный и отложенный остатки счета по транзакциям, зареги
стрированным по данному счету, и я обещал показать, как изменить
пример для обработки всех счетов за одно выполнение. Вот тот пример:
SELECT 'ALERT! : Account #1 Has Incorrect Balance!'
FROM account
WHERE (avail_balance, pending_balance) <>
(SELECT SUM(),
SUM()
FROM transaction
WHERE account_id = 1)
AND account_id = 1;
При использовании связанного подзапроса вместо несвязанного основ
ной запрос может выполняться всего лишь один раз, а подзапрос будет
выполняться для каждого счета. Вот обновленная версия:
SELECT CONCAT('ALERT! : Account #', a.account_id,
' Has Incorrect Balance!')
FROM account a
WHERE (a.avail_balance, a.pending_balance) <>
(SELECT SUM(),
SUM()


Связанные подзапросы
181
FROM transaction t


Достарыңызбен бөлісу:
1   ...   156   157   158   159   160   161   162   163   ...   261




©engime.org 2024
әкімшілігінің қараңыз

    Басты бет