2017-09-29 14 views
0

私は、私はこの特定のクエリに対して、グループA、グループB、グループCにありますどのように多くの加入者COUNTにしようとしている時間のためにこれにこだわっている:カウント(選択*参加)mysqlのクエリ

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 | 
---------------------------------------------------------------------- 

Query Result

各id_subscriberには2行(電気用と水用)の2つの行があります。 id_subscriberによってグループ化した後:私はそれを作るサブクエリの前にCOUNTを追加しようとした

Result

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

しかし、それは動作しません

GROUP BY rh.id_subscriber 

私はこれを得ました。

+0

私はあなたの質問以下の苦労を抱えています。あなたの質問を_edit_し、あなたが実際に期待している結果とともに、関係する3つのテーブルのサンプルデータを表示してください。私は選択リストでその厄介なサブクエリを取り除くことができると確信していますが、データを表示しない限り、わからないでしょう。 –

答えて

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; 
+0

素敵!あなたの質問を調整した後、私が望む結果を得ることができました。どうもありがとうございます! –