mysql查询选择30天内到期发票的公司

bvhaajcl  于 2021-06-21  发布在  Mysql
关注(0)|答案(1)|浏览(360)

我试图显示一个表中的公司列表,这些公司将在30天内发送新的发票,但我遇到的问题是,当我创建他们的新发票时,他们仍保留在列表中,我希望他们被删除。 sw_practices contains 公司信息 sw_invoices contains 各自的发票数据
我当前的查询是:

SELECT
    *
FROM
    SW_PRACTICES    AS  P
JOIN
    (
        SELECT
            *
        FROM
            SW_INVOICES
    )AS I
ON
    P.PRAC_ID   =   I.PRAC_ID
WHERE
    P.ACTIVE    =   '2'
AND I.NEXT_DUE  >   NOW()   -   INTERVAL    7   DAY
AND I.NEXT_DUE  <   NOW()   +   INTERVAL    30  DAY
ORDER BY
    I.INV_ID    ASC

因此,这是成功地显示所有30天内到期,这是正确的。
期望的结果是它显示发票01在30天内到期,这就是它正在做的,但是当我创建发票02并且下一个到期单元格是未来12个月的日期时,我希望它不再显示发票01到期,因为prac\u id有一个更新了的行和一个更新的发票。

q9rjltbz

q9rjltbz1#

通过添加 WHERE Inv_ID IN (SELECT MAX... 在子查询中,完整查询是:

SELECT *
FROM sw_practices as p 
JOIN (
    SELECT * 
    FROM sw_invoices 
    WHERE Inv_ID IN (
        SELECT MAX(Inv_ID) 
        FROM sw_invoices 
        GROUP BY Prac_ID
    )
) as i 
ON p.Prac_ID = i.Prac_ID 
WHERE p.Active = '2' 
AND i.Next_due > NOW() - INTERVAL 7 DAY 
AND i.Next_due < NOW() + INTERVAL 30 DAY 
ORDER BY i.Inv_ID ASC

相关问题