2016-06-29 4 views
0

こんにちは私は、用途が部門を選択して欲しい箇所を選択したいと考えています。WHEREこの部門が最初です。税務部門から10件の結果を選択し、 SUMSELECT料金WHERE status = 1。どの結果が最初の選択に基づいて選択されますか?結果はすべて同じテーブルから得られます。MySQL選択済みの結果の第2の数を選択してください

| id | department | status | fee | 
---------------------------------- 
| 1 | tax  | 1 | 20 | 
| 2 | tax  | 2 | 20 | 
| 3 | tax  | 1 | 20 | 
| 4 | accounting | 1 | 20 | 

だから私は部門が税として選択された場合に選択したい、とステータスがあるべきFEE列の合計1である40

は、これまでのところ、私の選択クエリは次のようになります。

SELECT P.id, P.fee, (SELECT SUM(P.fee) FROM cases P WHERE status = 1) as fee_USD 
FROM cases P WHERE 1"; 
if (!empty($department)) { $sql .= " AND P.department = '$department'"; } 

部門が選択肢として指定されているかどうかを最後の行で確認しています。他にもオプションがありますが、シンプルにするために、この部分だけを貼り付けました。どんな助けも歓迎です。あなたがあなたのクエリに相関を追加する必要が現在の選択料に

さ= 80

答えて

0

SELECT P1.id, P1.fee, 
     (SELECT SUM(P2.fee) 
     FROM cases P2 
     WHERE P2.department = P1.department AND status = 1) as fee_USD 
FROM cases P1 
WHERE 1 ... 

この方法でサブクエリはに関連するレコードだけのSUMを返します。メインクエリの現在のレコード。

+0

この問題を解消するには、指定された$部がnullでない場合、最初にWHERE句をチェックインする方法があります。P2.department = P1.department –

+0

@JohnSinigerはい通常、 '$ department is NULL OR department = $ department'のようなことをします。 –

関連する問題