Поиск клиентов в базе данных по INN и KPP

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 не нужен.