2010-12-18 23 views
2

私の質問は左のジョイントに関するものです。私は何人のプロジェクトを追跡しているのかを数えようとしました。 (ゼロフォロワーが存在することができる)
SQLの列の順序は重要ですか?

今私は仕事にそれを得ることができる唯一の方法は、暗黙のうちにこれを使用して回避する方法であり、唯一の選択した場合、私の質問は

group by idproject 

を追加することです
そのグループオプションを設定します。

SQL:ゼロとして

select `project_view`.`idproject` AS `idproject`, 
count(`track`.`iduser`) AS `c`,`name` 
from `project_view` left join `track` using(idproject) 

I expected it count nullが、それは私が数え怠るならば、それは信者が存在しないヌルとして示し、全く
を表示されません。

+2

集計関数が何を数えるかを知るためには、by by groupが必要です。選択の順序は関係ありません。 –

答えて

3

特定のプロジェクトを指定するWHERE句がある場合にはGROUP BYが必要です。あなたはプロジェクトごとにカウントしたい場合は、あなたが行う

SELECT project_view.idproject, COUNT(track.iduser) AS c, name 
FROM project_view 
LEFT JOIN track USING (idproject) 
WHERE idproject = 4 

は、GROUP BYが必要です。

SELECT project_view.idproject, COUNT(track.iduser) AS c, name 
FROM project_view 
LEFT JOIN track USING (idproject) 
GROUP BY idproject 
+0

これは私がやったことです、私は "group by"を明示的に使用せずに同様の動作を達成できると思いました。今私はそれの問題を理解する – shevski

1

はい選択の順序は問題ありません。パフォーマンス上の理由から、(最も一般的には)データセットを絞り込むための最も重要な選択肢がまず必要です。これにより、後続のクエリはすべて、より小さなデータセットで処理されます。

+0

これは真実かもしれませんが、それは私の質問に関係します。とにかくチップのおかげです。 – shevski

関連する問題