Php 这个查询也给了我空白的结果!!!Mysqli连接表
此图显示有些行具有空值,我不需要它们 而且这个查询需要很长时间才能加载 基本上我想要的是 我在从数据库的两个表中获取值时遇到一些问题。我的数据库中有两个表1是mem,2是payment mem stores name和drawid of users payment table stores draw和分期付款 用户每月向我们付费。因此,如果提款id为1的用户在2月份向我们付款,则两个表中的值分别为mem drawid=1和name=something付款提款=1和分期付款=2 mem中的提款ID与提款付款相同 因此,表具有多对多关系。现在我需要找到所有在第4个月之前还没有支付1期分期付款的会员的名单Php 这个查询也给了我空白的结果!!!Mysqli连接表,php,mysql,mysqli,Php,Mysql,Mysqli,此图显示有些行具有空值,我不需要它们 而且这个查询需要很长时间才能加载 基本上我想要的是 我在从数据库的两个表中获取值时遇到一些问题。我的数据库中有两个表1是mem,2是payment mem stores name和drawid of users payment table stores draw和分期付款 用户每月向我们付费。因此,如果提款id为1的用户在2月份向我们付款,则两个表中的值分别为mem drawid=1和name=something付款提款=1和分期付款=2 mem中的提款ID
SELECT drawid,contact,dnd,mem.name,link,address, count(*) as numPayments,NULL numPaidPayments ,NULL PAID_CONTACT,NULL NAME_PAID FROM mem
LEFT JOIN payment ON (mem.drawid = payment.draw) GROUP BY
drawid HAVING numPayments < '4'
UNION
SELECT NULL drawid,NULL contact, NULL dnd, NULL name,NULL link, NULL address,NULL numPayments,COUNT(*) as numPaidPayments ,contact PAID_CONTACT,mem.name NAME_PAID FROM mem
INNER JOIN payment ON (mem.drawid = payment.draw) GROUP BY
drawid HAVING numPaidPayments < '4' order by link desc
我已经厌倦了解决这个问题,请给我一些建议,我从一个星期以来一直在努力解决这个问题
我正在为这两个表结构添加图像
在此处输入图像描述
似乎您只想计算每个成员的付款:
select
m.*,
(select count(*) from payment p where p.draw = m.drawid) as num_paid_payments
from mem m;
仅限于支付少于四笔款项的人员:
select *
from
(
select
m.*,
(select count(*) from payment p where p.draw = m.drawid) as num_paid_payments
from mem m
) paid
where num_paid_payments < 4;
或者以不同的方式写:
select
m.*,
coalesce(cnt, 0) as num_paid_payments
from mem m
left join
(
select draw, count(*) as cnt
from payment
group by draw
) p on p.draw = m.drawid
where coalesce(cnt, 0) < 4;
select
m.*,
count(p.draw) as num_paid_payments
from mem m
left join payment p on p.draw = m.drawid
group by m.drawid
having count(p.draw) < 4;
或者以不同的方式写:
select
m.*,
coalesce(cnt, 0) as num_paid_payments
from mem m
left join
(
select draw, count(*) as cnt
from payment
group by draw
) p on p.draw = m.drawid
where coalesce(cnt, 0) < 4;
select
m.*,
count(p.draw) as num_paid_payments
from mem m
left join payment p on p.draw = m.drawid
group by m.drawid
having count(p.draw) < 4;
没有额外的信息,我们很难帮助你。请告诉我们有关您试图通过查询实现的目标的更多信息。空白结果意味着根本没有结果。显然是一个错误的查询。$m是您的值或变量??首先,您不能选择不在group by中的字段,如link、address…请解释您的表和您的join。您是否可以编辑您的代码以便查询在选定的列之间变成可读的新行?例如,这太棒了!!!但我只需要找到那些支付金额少于4美元的会员,你太棒了。