Привет, я действительно застрял здесь, вот куда я достиг, пытаясь изо всех силвыберите всех участников из 13c_users
, которые подписались (13c_subs='1')
на ежемесячные платежи из таблицы 13c_payments
, которые, возможно, не платили ни одного месяца любого года до настоящего времени (13c_month
хранит номер month и 13c_year stores
номер год в таблице 13c_payment
Теперь приведенный выше запрос работает довольно неплохо, но он не выбирает пользователей, которые еще ничего не заплатили, напримерпользователя подписан и не заплатил ни за какой месяц, запрос не будет соответствовать ему.
Пожалуйста, проверьте запрос, что я делаю здесь неправильно!
////////////////////////////////// отредактировано /////////////////////
Это до сих пор, пока я не мог достичь, я не получаю ожидаемых результатов:
select * from ( (select * from 13c_users u Left JOIN 13c_payments p ON
u.13c_usid=p.13c_usid where (13c_subs='1' and u.13c_comp_id='$yid') ) as T )
where ( (13c_year is NULL or 13c_year IN (2019) ) and (13c_month IS NULL or
13c_month NOT IN (1,2,3,4,5,6,7,8,9,10,11,12)) and (T.13c_invoice_pay='0' or T.13c_invoice_pay is
NULL ))
В приведенном выше запросе выбираются все участники, которые никогда не платили, ноNот тех участников, которые заплатили за первые 2 месяца, а не после этого.
таблица оплаты получает запись о каждом платеже, выполненном в отдельных строках..
я точно знаю, что в этой части запроса что-то не так
(13c_year is NULL or 13c_year IN (2019) ) and (13c_month IS NULL or
13c_month NOT IN (1,2,3,4,5,6,7,8,9,10,11,12)
я хочу выбрать строку, если в строке нет ни одного месяца, упомянутого там 13c_month NOTIN (1,2,3,4,5,6,7,8,9,10,11,12), но строки раздельные, поэтому он всегда будет выбирать каждую строку
Таблица пользователей
Таблица платежей