Задать вопрос
@aero0

Правильно ли написан SQL-запрос для вывода клиентов с действующими (непогашенными) кредитами?

Добрый день!

Решаю учебную задачу по SQL.
Нужно вывести список клиентов с действующими (непогашенными) кредитами, используя 3 таблицы:
– t1 (кредитные контракты),
– t2 (депозитные контракты),
– t3 (клиенты).

Ниже привожу структуру и данные таблиц (MySQL 5.7):

CREATE TABLE t1 (
CREDIT_CONTRACT_ID INT,
START_DATE DATE,
END_DATE DATE,
CUSTOMER_ID INT,
CREDIT_AMOUNT INT
);

INSERT INTO t1 VALUES
(1, '2015-10-15', '2015-12-30', 1, 1000),
(2, '2015-12-14', NULL, 2, 2000),
(3, '2015-10-20', NULL, 3, 15000),
(7, '2015-12-28', NULL, 4, 80000),
(8, '2015-10-07', NULL, 5, 3000),
(9, '2015-06-30', NULL, 6, 29000),
(10, '2015-04-09', NULL, 7, 8000),
(11, '2015-01-20', NULL, 8, 68000),
(12, '2015-10-27', NULL, 9, 7000);

CREATE TABLE t3 (
CUSTOMER_ID INT,
NAME VARCHAR(100),
BIRTH_DATE DATE,
CITY VARCHAR(100)
);

INSERT INTO t3 VALUES
(1, 'Серик', '1975-09-20', 'Алматы'),
(2, 'Динара', '1977-07-22', 'Алматы'),
(3, 'Марат', '1969-01-02', 'Астана'),
(4, 'Олег', '1967-09-27', 'Астана'),
(5, 'Марина', '1969-10-12', 'Алматы'),
(6, 'Дильшат', '1979-10-08', 'Караганда'),
(7, 'Ануар', '1982-04-17', 'Кызылорда'),
(8, 'Михаил', '1980-12-11', 'Атырау'),
(9, 'Екатерина', '1987-02-12', 'Актобе');

Мой запрос:

SELECT
t3.NAME,
t3.BIRTH_DATE,
t3.CITY,
t1.CREDIT_CONTRACT_ID,
t1.START_DATE,
t1.END_DATE,
t1.CREDIT_AMOUNT
FROM t1
JOIN t3 ON t1.CUSTOMER_ID = t3.CUSTOMER_ID
WHERE t1.END_DATE IS NULL;

По идее, я ищу кредиты, у которых END_DATE не указана (то есть кредит ещё не погашен).
Результат запроса выглядит логично, но хочу убедиться, что это корректный и оптимальный способ.
Может быть, есть нюансы или альтернативные подходы?

Спасибо за помощь!
  • Вопрос задан
  • 44 просмотра
Подписаться 1 Простой 2 комментария
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы