【问题标题】:Count (Select * Join) mysql queryCount (Select * Join) mysql查询
【发布时间】:2017-09-29 01:41:15
【问题描述】:

我在这个问题上坚持了几个小时,我正在尝试 COUNT 在 A 组、B 组、C 组中有多少订阅者用于此特定查询:

SELECT rh.id_subscriber, rh.bill_month, rh.bill_year,
 ( 
     SELECT tbl_gen_info.gen_data_03 
     FROM tbl_subscriber 
     LEFT JOIN tbl_gen_info ON tbl_subscriber.bill_area_code = tbl_gen_info.gen_data_01
     WHERE rh.id_subscriber = tbl_subscriber.id_subscriber

 ) AS group_area

FROM tbl_reading_head AS rh
WHERE rh.id_soa_head IS NULL 
AND rh.read_status <> 'Beginning' 
AND rh.rec_status = 'active'
ORDER BY rh.id_subscriber

子查询从tbl_gen_info获取Group区域gen_data_03

表格包含以下信息:

tbl_gen_info
--------------------------------------------
| gen_category | gen_data_01 | gen_data_03 |
--------------------------------------------
| Area Code    | Camacho St. | Group A     |
--------------------------------------------

tbl_subscriber
----------------------------------
| id_subscriber | bill_area_code | 
----------------------------------
|        1      | Camacho St.    | 
----------------------------------

tbl_reading_head
----------------------------------------------------------------------
| id_subscriber | id_soa_head | read_status | bill_month | bill_year |
----------------------------------------------------------------------
|        1      |     NULL    |   Metered   |     10     |   2017    |
----------------------------------------------------------------------

请注意,每个 id_subscriber 都有两 (2) 行(一排用于电,一排用于水)。按 id_subscriber 分组后:

GROUP BY rh.id_subscriber

我知道了:

我尝试在子查询之前添加COUNT:

  COUNT(SELECT tbl_gen_info.gen_data_03 ...) AS group_area

但这不起作用。

【问题讨论】:

  • 我很难理解你的问题。请编辑您的问题并向我们展示所涉及的三个表格的示例数据以及您实际期望的输出。我很确定您可以摆脱选择列表中那个讨厌的子查询,但除非您向我们展示一些数据,否则我们无法确定。

标签: mysql sql select count


【解决方案1】:

使用子查询:

SELECT rh.group_area, COUNT(*)
FROM (SELECT rh.id_subscriber, rh.bill_month, rh.bill_year,
             (SELECT tbl_gen_info.gen_data_03 
              FROM tbl_subscriber LEFT JOIN
                   tbl_gen_info
                   ON tbl_subscriber.bill_area_code = tbl_gen_info.gen_data_01
             WHERE rh.id_subscriber = tbl_subscriber.id_subscriber
            ) as group_area
      FROM tbl_reading_head rh
      WHERE rh.id_soa_head IS NULL AND
            rh.read_status <> 'Beginning' AND
            rh.rec_status = 'active'
     ) rh
GROUP BY rh.group_area;

【讨论】:

  • 太棒了!在对您的查询进行一些调整后,我能够得到我想要的结果。非常感谢!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2015-02-22
  • 2012-09-05
  • 2017-10-28
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多