使用mysql语句联接表并返回最大值而不是PHP数学

阿斯克

在使用MySQL的PHP​​中,我试图编写查询以使用Joined Tables拉取某些必需的报告。我已经阅读了许多SQL脚本手册,并且通常会通过将过滤后的记录从db表中拉入PHP并执行以下操作来完成此类操作那里的数学体操。不幸的是,这效率低下,因此我正在寻找正确的SQL查询以指示正确的方向。这是我的情况。

我有mysql表:事件和付款,它们由一个ID列链接(events.event_id = payments.payment_event_id)

我需要获取一个仅包含与付款相关程度最高的5个事件的记录集。然后,我想要一个包含此原始事件详细信息数组以及一个整数的数组,该整数是其票务支付计数。

理想情况下,结果数组结构应如下所示:

$result_events--
|0||0|payment count(53)
|0||1|$full event array

|1||0|Payment Count (34)
|1||1|$full event array

编辑:

与人交谈后,我想我会说出我要追求的目标。我需要一个2列的结果集,左列是event_id(来自事件表),右列是该事件的付款总额(即与该事件ID匹配的“付款”行数。因此,从事件和付款,我想留下一个这样的东西:

| Event_id | total Payments |

但按付款列排序。我知道我在问地球:)

戴夫·高顿(Dave Goten)

如果您想获得某事件的5种最常见付款并仅获得这5条详细信息,则可以执行子查询以获取event_id,然后在其中对payment_event_ids进行分组,然后按从上到下的顺序对计数进行排序,并获得前5个结果。

然后,您获取这些ID,并获取与这些ID相匹配的事件详细信息

SELECT 
  * 
FROM 
  events 
WHERE 
  event_id IN (
    SELECT 
      payment_event_id 
    FROM 
      payments 
    GROUP BY payment_event_id 
    ORDER BY count(*) DESC 
    LIMIT 5
  );

(可选)您还可以通过联接获得所有付款详细信息,但是您将获得多于5行的返回方式

SELECT 
  * 
FROM 
  events 
JOIN
  payments
ON
  events.event_id = payments.payment_event_id
WHERE 
  events.event_id IN (
    SELECT 
      payment_event_id 
    FROM 
      payments 
    GROUP BY payment_event_id 
    ORDER BY count(*) DESC 
    LIMIT 5
  );

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

MySQL-从联接表返回最大值

来自分类Dev

查找自然联接表的最大值

来自分类Dev

联接表中的多个最大值

来自分类Dev

MySQL查询以使用GROUP BY和独立行中的多个表联接获取最大值,最小值

来自分类Dev

使用excel vba查找最大值并返回表的标题

来自分类Dev

数学最小值和最大值返回NaN

来自分类Dev

如何使用WordPress API在PHP领域中获取MySQL表的一列的最大值

来自分类Dev

MySQL查询使用自动增量获取表的最大值

来自分类Dev

如何从多个联接表MySQL中选择不同的最大值

来自分类Dev

使用if语句确定最大值

来自分类Dev

MYSQL返回每个组的最大值

来自分类Dev

尝试以最大值联接行中的表

来自分类Dev

使用mysql / php从多个表的多个联接返回多个结果

来自分类Dev

使用mysql / php从多个表的多个联接返回多个结果

来自分类Dev

年份年份最大值Mysql / PHP

来自分类Dev

使用存储过程和联接查询获取最大值

来自分类Dev

使用if语句过滤最小值/最大值R

来自分类Dev

返回计数类型或最大值计数可以返回mysql

来自分类Dev

在PHP中使用从mysql表返回的值

来自分类Dev

内部联接两个表,并为第二个表的第一个表中的每个条目返回最大值

来自分类Dev

从MySQL中的表中获取最大值,不同值

来自分类Dev

从表返回值时与case语句联接

来自分类Dev

使用最大值突变IF-Else语句

来自分类Dev

使用mysql查询在表中查找第二个最大值

来自分类Dev

使用mysql查询在表中查找第二个最大值

来自分类Dev

MySQL选择MAX(日期时间)不返回最大值

来自分类Dev

QueryDSL返回最大值

来自分类Dev

返回最大值的索引

来自分类Dev

在mysql的四个表中找到最大值

Related 相关文章

热门标签

归档