sql >> データベース >  >> RDS >> Mysql

MySQLGROUPBY異なるテーブルの複数の列

    あなたの質問

    SELECT sum(d.data) as total
    FROM data d, ta, tb
    WHERE
    (d.type LIKE "type_a" AND d.type_id = ta.id) 
    OR 
    (d.type LIKE "type_b" AND d.type_id = tb.id) 
    GROUP BY a.customer_id, b.customer_id;
    

    dにレコードが1つだけあり、それがtype_aであるとします。 taとtbにはそれぞれ2つのレコードがあります。 dのレコードは、d.type_id=ta.idのtaのレコードの1つと一致します 。したがって、(d x ta)の組み合わせにより、任意のtbレコードを最終結果に残すことができます。意図しないデカルト積を取得します。

    SELECT x.customer_id, SUM(data) total
    FROM
    (
        SELECT ta.customer_id, d.data
        FROM data d JOIN ta
           ON (d.type LIKE "type_a" AND d.type_id = ta.id) 
        UNION ALL
        SELECT tb.customer_id, d.data
        FROM data d JOIN tb
           ON (d.type LIKE "type_b" AND d.type_id = tb.id) 
    ) X
    GROUP BY x.customer_id;
    



    1. PHPを介してMySQLデータベースの出力をXMLに取得

    2. SQLServerの既存の列にIDプロパティを追加するにはどうすればよいですか

    3. date_subから週末をどのように除外しますか?

    4. phpjson_encodemysqlの結果