仅从2个表中选择表2中的新条目

时间:2017-04-10 17:46:00

标签: mysql sql

我有两张桌子,顾客和付款。我正在尝试仅选择在指定月份和年份内有付款的新客户,而在另一个月内没有先前的付款。

表客户

id - name

表格付款

id - id_customer - 月 - 年 - 金额

SELECT * FROM customer, payment
WHERE Customer.id = Payment.id_customer
AND month = '$month'
AND year = '$year'

这可以获得特定月份和年份的所有付款,但我不知道如何排除所有其他先前付款的客户。

感谢您的时间。

2 个答案:

答案 0 :(得分:0)

要获取第一个付款日期,请使用GROUP BY。但是,您必须先将值转换为类似日期的内容:

SELECT p.id_customer, MIN(CONCAT_WS, '-', p.year, p.month)) as first_yyyymm
FROM payment p
GROUP BY p.id_customer;

您应将付款日期存储为日期。

答案 1 :(得分:0)

我认为如果没有第三张桌子,你就无法做到这一点。您可以做的是创建第三个表,其中包含您在查询中选择的所有ID,并在每次运行选择查询时更新它。 然后下面的查询可能会起作用:

SELECT * FROM customer c, payment p WHERE c.id = p.id_customer 
AND month =  '$month'AND year = '$year'AND p.id NOT IN (SELECT id FROM 
third_table)

希望它能回答你的问题。