Как выбрать запись из таблицы 1, где еще нет записи о платеже? - PullRequest
0 голосов
/ 13 мая 2018

У меня есть 2 таблицы в MySQL, я хочу выбрать всех клиентов из таблицы 1, в которой еще нет записи о платеже в таблице 2 или (на конкретную дату).

на самом деле я работаю в платежной системе клиентов вphp, и хотите создать отчет о том, что клиенты, которые не представили свой взнос в соответствии с датой оплаты.

Дата оплаты - 10 числа каждого месяца.Как я могу этого достичь?

Отредактировано для более подробной информации: 1- В таблице 1 у меня есть биологические данные клиентов 2- В таблице 2 записи платежей в рассрочку

клиенты должны оплатить рассрочку до 10-го числакаждого месяца.когда клиент отправляет свой платеж, его запись будет вставлена ​​в таблицу 2.

Теперь я хочу уведомить клиентов или сделать отчет, который не представил свой взнос до 10-го (или любой установленной даты) текущего месяца.

должен составить отчет, чтобы сотрудник по восстановлению мог получить список клиентов, которые опоздали с отправкой рассрочки или отправить напоминание клиентам о предстоящем взносе в рассрочку.

мои таблицы

Table 1

Table 2

Ответы [ 2 ]

0 голосов
/ 13 мая 2018

То, что вы ищете, называется левым соединением. Вы можете добиться этого, делая что-то вроде.

SELECT * FROM Table1 LEFT JOIN Table2 On Table1.Key=Table2.Key WHERE Table2.Key IS NULL
0 голосов
/ 13 мая 2018

Звучит как not exists.Вы не предоставляете достаточно информации, но идея будет такой:

set @duedate = ?;  -- whatever your logic is for this

select t1.*
from table1 t1
where not exists (select 1
                  from table2 t2
                  where t2.id = t1.id and t2.date > @duedate
                 );

РЕДАКТИРОВАТЬ:

Из вашего комментария я предполагаю, что вы хотите:

select t1.*
from table1 t1
where not exists (select 1
                  from table2 t2
                  where t2.id = t1.id and
                        (day(curdate()) > 10 and
                         t.2 > curdate() + interval (10 - day(curdate)) day
                        ) or
                        (day(curdate()) > 10 and
                         t.2 > curdate() + interval (10 - day(curdate)) day - interval 1 month
                        )
                 );

Обратите внимание, что это может не помочь.А как насчет просроченных платежей?При этом предыдущий просроченный платеж будет считаться не просроченным.

Если это проблема, я бы порекомендовал вам задать другой вопрос.Поместите пример данных и желаемых результатов в текстовые таблицы в вопросе.Четко объясните логику, которую вы хотите, и любой пример запроса полезен.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...