2017-08-01 3 views
0

の一環として、私はこのようなものがあります:のMySQL - WHERE句でMINとMAXを選択する必要があり、大きなクエリ

SELECT foo1, foo2, foo3, MAX(foo4) AS max FROM table WHERE foo5 = bar; 

事がfoo5 =バー句が適用有することに加えて、ですクエリ全体に対して、私はfoo4の条件も指定したいと思います。私はテーブル全体からfoo4の最大値を求めているのではなく、別のフィールドが特定のものと等しいときのfoo4の最大値を求めています。そうですね。

SELECT foo1, foo2, foo3, MAX(foo4 WHERE field=otherthing) AS max FROM table WHERE foo5 = bar; 

どうすればいいですか?

編集:ここでもう少し詳しく説明します。これは私の現在のクエリである:この場合

SELECT Car_Type, Car_Imm, MIN(Use_Kilom) AS Init_Kilom, 
     MAX(Use_Kilom) AS Final_Kilom, MAX(Use_Kilom) 
     - MIN(Use_Kilom) AS Distance_Kilom, null, null, 
     SUM(Use_Amount) AS Amount_Total, 
     SUM(Use_Liter)/20 AS Liter_Total, null, null 
FROM fueluse, car 
WHERE Use_Car = Car_Code AND 
     (Use_Date BETWEEN '$datefrom' AND '$dateto') 

、MAX(Use_Kilom)およびMIN(Use_Kilom)は、両方のテーブル全体からの絶対最大値と最小値を取得しています。私はそれぞれのUse_Car値の最大値を取得したいだけです。

私は、それぞれ、次のように置き換える試みた:

(SELECT MIN(Use_Kilom) FROM fueluse, car WHERE Use_Car = Car_Code) AS Init_Kilom 
(SELECT MAX(Use_Kilom) FROM fueluse, car WHERE Use_Car = Car_Code) AS Final_Kilom 

をしかし、彼らはまだ私に全体fueluseテーブルのUse_Kilomフィールドの絶対最小値と最大値を与えるだけではなく、各Use_Carの最大値と最小値のためにしていますUse_Kilomの値。 Use_CarとCar_Codeは外部キーとしてリンクされていることに注意してください。

+0

(またはそのエイリアス)に属しているテーブル名を使用してフィールド名を修飾した場合それは、物事明確になるだろう。 –

+0

私はもう少し詳しく質問を編集しました。 – Bluejay

+0

なぜあなたは意図的に 'ヌル'を選択していますか? – Martin

答えて

1

集計関数(min、max、sumなど)を使用してgroup by節が表示されます。この場合Car_Type、Car_Immでおそらくグループ化します。 implict joinも明示的なjoinに変更する必要があります。

SELECT Car_Type, Car_Imm, MIN(Use_Kilom) AS Init_Kilom, 
     MAX(Use_Kilom) AS Final_Kilom, MAX(Use_Kilom) 
     - MIN(Use_Kilom) AS Distance_Kilom, null, null, 
     SUM(Use_Amount) AS Amount_Total, 
     SUM(Use_Liter)/20 AS Liter_Total, null, null 
FROM fueluse 
join car on Use_Car = Car_Code AND 
where (Use_Date BETWEEN '$datefrom' AND '$dateto') 
group by Car_Type, Car_Imm 

あなたは、彼らはあなたがサンプルデータと予想される結果を公開することができればそれが役立つだろう

+0

それは本当に単純にグループがありませんでした。私はBridgeで提案されているようにGROUP BY Use_Carを私の最初のクエリに追加しました。 – Bluejay

+0

@PSalmon私は、結合節が誤字の後に余分な 'AND'を推測していますか? – Bridge

関連する問題