【问题标题】:This Query Gives me blank results too !!! Mysqli join tables这个查询也给了我空白的结果!!! Mysqli 连接表
【发布时间】:2017-07-10 09:30:35
【问题描述】:

这张图片显示了一些我不需要它们的 NULL 值的行。

而且这个查询需要很长时间才能加载..

基本上我想要的是

从我的数据库的两个表中获取值时遇到了一些问题。我的数据库中有两个表 1 是 mem,2nd 是支付 mem 存储用户的名称和 drawid 支付表存储用户的提款和分期付款

用户每月向我们付款。因此,如果一个 draw id 为 1 的用户在 2 月向我们付款,则两个表中的值是 mem drawid=1 和 name = something payment draw = 1 和 instalment=2

在mem中的drawid和在payment中的drawid一样

所以表格有多对多的关系。现在我需要找到所有在第 4 个月之前连一期都没有付款的会员列表。

 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 

我厌倦了解决这个问题,请给我一些建议,我一周以来一直在尝试解决这个问题..

我正在为两个表格结构添加图像。

在此处输入图片描述

【问题讨论】:

  • 如果没有额外的信息,我们很难为您提供帮助。告诉我们更多关于您试图通过查询实现的目标。空白结果意味着根本没有结果。显然是一个错误的查询。
  • $m是你的值还是变量??
  • 首先不能选择不在group by中的字段,比如链接、地址...
  • 解释一下你加入的表。
  • 您能否编辑您的代码,使查询变得可读(例如,选定列之间的新行

标签: php mysql mysqli


【解决方案1】:

您似乎只想计算每个内存的付款:

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;

【讨论】:

  • 这太棒了!!!但我只需要获取 num_paid_payments 小于 4 的成员
  • 太棒了,你太棒了。
猜你喜欢
  • 2013-02-28
  • 2017-12-07
  • 2011-08-21
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-11-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多