私は2つのテーブルPO
とPO_Line
を持っていると私はPO
からすべてのフィールドに加えて、私は、クエリ何かを書くだろうPO
の各行にリンクPO_Line
から行の数量を一覧表示するとします以下のような -グループ
SELECT
PO.propA,
PO.propB,
PO.propC,
PO.propD,
PO.propE,
...
PO.propY,
COUNT(PO_Line.propA) LINES
FROM
PO
LEFT JOIN
PO_Lines
ON
PO.ID = PO_Lines.PO_ID
明らかにこれは、の線に沿ってエラーいろいろ書いを与えるだろう - それは、集計関数のいずれかに含まれていないため
列「PO.propA」が選択リストにinvaalidされますか、 GROUP BY句
だから、そうのように、私は、クエリの最後にGROUP BY
句を追加し、コピーして、自分の選択ラインを貼り付けます実行するクエリを取得する - 完璧しかしそれはすべての感触を作品
SELECT
PO.propA,
PO.propB,
PO.propC,
PO.propD,
PO.propE,
...
PO.propY,
COUNT(PO_Line.propA) LINES
FROM
PO
LEFT JOIN
PO_Lines
ON
PO.ID = PO_Lines.PO_ID
GROUP BY
PO.propA,
PO.propB,
PO.propC,
PO.propD,
PO.propE,
...
PO.propY
私は列の名前てきた場合は特に、少し扱いにくいすなわち -
SELECT
PO.propA AS 'FIRST PROPERTY',
PO.propB AS 'SECOND PROPERTY',
PO.propC AS 'THIRD PROPERTY',
PO.propD AS 'ANOTHER PROPERTY',
PO.propE AS 'YOU GET THE IDEA',
...
PO.propY
と私はコピー/ select句からエントリを貼り付けた後、列名を削除する必要があります。
私の質問です - 選択句で見つかったすべての集約されていないエントリでグループを言う簡略な方法はありますか?
あなただけの集計列と非集計キーフィールドにSELECTを行い、その後、別のSELECT DISTINCTに参加することができます残りの非集約フィールドのうちの1つを選択します。これも扱いにくいですが、非集約フィールドのすべてを明示的にリストするのではなく、SELECT *を実行できるという利点があります。 – mbeckish