Изучаем sql



Pdf көрінісі
бет170/261
Дата28.07.2022
өлшемі1,6 Mb.
#147825
1   ...   166   167   168   169   170   171   172   173   ...   261
Байланысты:
Изучаем SQL ( PDFDrive )

> FROM account
> GROUP BY open_emp_id
> HAVING COUNT(*) = (SELECT MAX(emp_cnt.how_many)
> FROM (SELECT COUNT(*) how_many
> FROM account
> GROUP BY open_emp_id) emp_cnt);
+++
| open_emp_id | how_many |
+++
| 1 | 8 |
+++
1 row in set (0.01 sec)
Подзапрос блока 
having
находит максимальное число счетов, откры
тых одним сотрудником, а основной запрос находит сотрудника, от
крывшего это количество счетов. Если бы с наибольшим числом от


190
Глава 9. Подзапросы
крытых счетов были связаны несколько сотрудников, запрос возвра
тил бы несколько строк.
Подзапросы как генераторы выражений
В этом последнем разделе главы я завершу тему, с которой начал, –
скалярные подзапросы, возвращающие один столбец и одну строку.
Кроме условий фильтрации скалярные подзапросы применимы везде,
где может появляться выражение, включая блоки 
select
и 
order
by
за
проса и блок 
values
(значения) выражения 
insert
.
Ранее в этой главе, в разделе «Подзапросы, ориентированные на зада
чи», было показано, как с помощью подзапроса отделить механизм
группировки от остального запроса. Вот вариант того же запроса, ис
пользующий подзапросы с той же целью, но подругому:
mysql> 
SELECT
>
(SELECT p.name FROM product p
>
WHERE p.product_cd = a.product_cd
>
AND p.product_type_cd = 'ACCOUNT') product,
>
(SELECT b.name FROM branch b
>
WHERE b.branch_id = a.open_branch_id) branch,
>
(SELECT CONCAT(e.fname, ' ', e.lname) FROM employee e
>
WHERE e.emp_id = a.open_emp_id) name,
>


Достарыңызбен бөлісу:
1   ...   166   167   168   169   170   171   172   173   ...   261




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

    Басты бет