我正在为PHP / MySql中的sportsclub制作一个web应用程序。其中一个功能是有一个支付清单,以检查其成员是否已付款。
在de paylist中选择成员的2个标准是:
此问题的相关表格和列是:
Members:
id_member (int) (PK)
join_date (date)
disbarred (enum: “true,false”)
Paylists:
id_paylist (int) (PK)
date_created (date)
Payments:
id_payment (int) (pk)
id_paylist (int) (fk)
id_member (int) (fk)
paid (enum: “true,false”)
我试过这样接近它:
首先,我使用简单的选择查询来获取薪资清单的日期并将其存储在变量中:
选择日期FROM paylist WHERE id_paylist = $ _GET ['id_paylist'];
然后我使用此查询从特定的工资单(id_paylist)制作列表。尚未付款的会员不在薪资表中,并显示为空:
SELECT
DISTINCT
m.*,
p.*,
pl.*
FROM
payments AS p
RIGHT JOIN members AS m ON m.id_member = p.id_member
LEFT JOIN paylists AS pl ON pl.id_paylists = p.id_paylist
WHERE
m.disbarred != true
AND
m.join_date <= " . $paylistdate . "
AND
pl.id_paylist = " . $_GET['id_paylist'] . " OR pl.id_paylist IS NULL
现在这种方式有效,除了日期标准。我已经尝试了很多东西,但我似乎无法做到这一点。
回应我的查询结果:
SELECT DISTINCT m.*, m.name AS name_member, b.*, bl.* FROM payments AS p RIGHT JOIN member AS m ON m.id_member = p.id_member LEFT JOIN paylists AS pl ON pl.id_paylist = p.id_paylist WHERE m.disbarred != true AND m.join_date <= 2013-05-13 AND pl.id_paylist = 3 OR pl.id_paylist IS NULL
如果有人可以帮助我,那会很棒。
编辑:此问题的解决方案是:
SELECT DISTINCT m.*, m.name AS name_member, p.*, pl.*
FROM
payments AS p
RIGHT JOIN members AS m ON m.id_member = p.id_member
LEFT JOIN paylists AS pl ON pl.id_paylist = p.id_paylist
WHERE
m.disbarred = 'false' AND
m.join_date <= '2013-05-13' AND
(pl.id_paylist = 3 OR pl.paylist IS NULL)
感谢帮助人员。