| Задачка SQL-щикам для тренировки | |
|---|---|
|
tata Автор Сообщений: 3521 Откуда: Йошкар-Ола Дата регистрации: 23.10.2005 |
Требуется написать SQL-запрос, выводящий список клиентов, для которых в таблице документов нет записи с типом "СНИЛС", не используя при этом подзапросы.
Таблица CLIENTS имеет вид: ID NAME 1 Иванов 2 Петров 3 Сидоров 4 Ломоносова 5 Веган Таблица DOCS имеет вид: ID ID_CLIENT DOC_TYPE DOC_NUM 1 1 'ПАСПОРТ' '1245 12' 2 1 'СНИЛС' '123-123' 3 2 'ПАСПОРТ' '1277 12' 4 3 'СНИЛС' '123-333' 5 5 'ЗАГРАН' '567444' У меня только с подзапросом получается, т.е. задача не решена. WITH clients as ( SELECT 1 ID, 'Иванов' NAME UNION ALL SELECT 2, 'Петров' UNION ALL SELECT 3, 'Сидоров' UNION ALL SELECT 4, 'Ломоносова' UNION ALL SELECT 5, 'Веган' ), docs as( SELECT 1 ID, 1 ID_CLIENT, 'ПАСПОРТ' DOC_TYPE, '1245 12' DOC_NUM UNION ALL SELECT 2, 1, 'СНИЛС','123-123' UNION ALL SELECT 3, 2, 'ПАСПОРТ', '1277 12' UNION ALL SELECT 4, 3, 'СНИЛС', '123-333' UNION ALL SELECT 5, 5, 'ЗАГРАН', '567444' ) SELECT c.* FROM CLIENTS c WHERE (CASE WHEN (SELECT 1 FROM docs d WHERE d.ID_CLIENT = c.ID And d.DOC_TYPE = 'СНИЛС' ) =1 THEN 1 ELSE 0 END) = 0 |
| Re: Задачка SQL-щикам для тренировки | |
|---|---|
|
PuMa Сообщений: 156 Откуда: Комсомольск-на-А Дата регистрации: 19.04.2006 |
в FoxPro я бы сделал так
|
| Re: Задачка SQL-щикам для тренировки | |
|---|---|
|
MikhsR Сообщений: 16 Откуда: Москва Дата регистрации: 19.12.2022 |
Ну разве что для тренировки.
На T-SQL : Select a.id, a.Name From Clients a Left Join Docs b On (a.id=b.id_client) And (Doc_type='СНИЛС') Where b.Doc_type Is Null |
| Re: Задачка SQL-щикам для тренировки | |
|---|---|
|
sphinx Сообщений: 32802 Откуда: Екатеринбург Дата регистрации: 22.11.2006 |
Визуально выглядит намного лаконичнее, чем вариант PuMa.
А проверяли на тестовых данных ТС? ------------------ "Veni, vidi, vici!"(с) |
| Re: Задачка SQL-щикам для тренировки | |
|---|---|
|
sphinx Сообщений: 32802 Откуда: Екатеринбург Дата регистрации: 22.11.2006 |
P.S. И логичнее. Наверное все увидели ответ - и не стали писать свои варианты. Хотя чаще до соревнований доходит - у кого быстрее запрос, у кого ноги длиннее, кто дальше плюнет. Иногда участвую, если не в конце прочитал решения. ------------------ "Veni, vidi, vici!"(с) |
| Re: Задачка SQL-щикам для тренировки | |
|---|---|
|
MikhsR Сообщений: 16 Откуда: Москва Дата регистрации: 19.12.2022 |
Да. |
| Re: Задачка SQL-щикам для тренировки | |
|---|---|
|
sphinx Сообщений: 32802 Откуда: Екатеринбург Дата регистрации: 22.11.2006 |
Сравню оба варианта.
Татьяне может не актуально уже, но мы за правильные решения, если есть варианты. Спасибо! ![]() ------------------ "Veni, vidi, vici!"(с) |
| © 2000-2025 Fox Club  |