「esta」グループごとに蓄積された項目数を示す一連の結果を取得する必要があります。MySqlのグループごとの結合項目数
結果をグループ化しています。
Establishmentはベースに内部結合されています。
左に結合されたアイテムは、ベースに対して結合されます。
したがって、Estaグループ2では、3つのベースIDがあるとします。ベースIDに添付された各書面および口頭のレコードは、結果セット内のそのエスタにカウントされます。 各基本レコードに複数の「書面」または「口頭」を付けることができます。
私はデータベースに6つの逐語と4つのwrittensを持っていますが、それらは異なる 'esta'レコードに広がっています。私の質問では、彼らはすべて私が得た結果の最初の行に向かっています。
私はずっと多くのデータで同じことを試していますが、 'esta'に関係なく、最初の行にはすべての左結合要素が一緒に数えられます。
SQL:
SELECT
esta.enf_esta_id
,SUM(IF(verbal.enf_verbal_id is not null,1,0)) as verbals
,SUM(IF(written.enf_written_id is not null,1,0)) as writtens
FROM
enf_base base
INNER JOIN enf_esta esta ON esta.enf_esta_id = base.enf_esta_id
LEFT JOIN enf_verbal verbal ON verbal.enf_base_id = base.enf_base_id
LEFT JOIN enf_written written ON written.enf_base_id = base.enf_base_id
WHERE
1=1
GROUP BY
esta.enf_esta_id
結果:
enf_esta_id verbals writtens
2 10 10
3 1 0
4 1 1
6 0 0
一番上の行が間違っていることを証明するために、ここだけenf_esta_id 2.
SELECT
COUNT(*) AS total
FROM
enf_written
INNER JOIN enf_base ON enf_base.enf_base_id = enf_written.enf_base_id
INNER JOIN enf_esta ON enf_base.enf_esta_id = enf_esta.enf_esta_id
WHERE
enf_esta.enf_esta_id =2
からverbalsとwrittensを得るための結果があります
収量:
5
また、enf_verbalと同じ結果が得られます2.問題の照会結果の一番上の行を割り引くと、それぞれの合計を合計すると正しい10が得られます。
誰でも私が必要とする結果を得るのを助けることができますか?
あなたはesta.enf_esta_idしか持っていませんか? – b1n0ys
エスタは多くの基盤を持っていますが、それが理にかなっていれば、多くの言葉に書かれています。インスタントで口頭/書いた数を探しています – blodey
しかし、それは多くの拠点がエスタであり、あなたがエスタごとに1つの結果行を取得するようにグループ化した場合、結果に「ベース」IDをどのように表示できますか?あなたはどちらを見せたいですか?たぶんestaごとのベースIDのリスト?または、ベースIDをまったく表示する必要がありますか? –