16. Найти клиентов по ИНН и КПП
Условие задачи:
Дана таблица KF_ADAPTER_R_CLIENT, содержащая информацию о клиентах.
Необходимо написать SQL-запрос, который найдёт всех клиентов по точному совпадению inn и kpp.
Код:
CREATE TABLE KF_ADAPTER_R_CLIENT (
id SERIAL PRIMARY KEY,
abs_id VARCHAR(255),
branch_id VARCHAR(255),
abs_branch_id VARCHAR(255),
short_name VARCHAR(255),
inn VARCHAR(12),
kpp VARCHAR(9),
sign_count INT,
deleted BOOLEAN
);
CREATE TABLE KF_ADAPTER_R_DELEGATE (
id SERIAL PRIMARY KEY,
client_id INT,
abs_id VARCHAR(255),
user_id VARCHAR(255),
full_name VARCHAR(255),
phone VARCHAR(15),
sign_role VARCHAR(50),
deleted BOOLEAN,
FOREIGN KEY (client_id)
REFERENCES KF_ADAPTER_R_CLIENT(id)
);
Спойлеры к решению
Подсказки
💡 Для фильтрации строк используй
💡 ИНН и КПП нужно проверять одновременно через
💡 Для точного совпадения используй оператор
💡 Таблица
WHERE.💡 ИНН и КПП нужно проверять одновременно через
AND.💡 Для точного совпадения используй оператор
=.💡 Таблица
KF_ADAPTER_R_DELEGATE для этого запроса не требуется.Решение
SELECT *
FROM KF_ADAPTER_R_CLIENT
WHERE inn = '7701234567'
AND kpp = '770101001';
Условие:
WHERE inn = '7701234567'
AND kpp = '770101001'
оставляет только тех клиентов, у которых одновременно совпадают и ИНН, и КПП.
Если значения передаются из приложения, запрос обычно параметризуют:
SELECT *
FROM KF_ADAPTER_R_CLIENT
WHERE inn = :inn
AND kpp = :kpp;
Для поиска по ИНН и КПП достаточно таблицы KF_ADAPTER_R_CLIENT, поэтому JOIN с KF_ADAPTER_R_DELEGATE не нужен.