2016-12-27 8 views
0

私はウェブ上で見つけた次のSQLクエリを持っています。それが正常に動作すれば完璧ですが、where節を遵守していません。where節が守られていない

SELECT * 
FROM Chicken AS a, 
    (SELECT MIN(Temp) AS mini, MAX(Temp) AS maxi 
     FROM Chicken 
    ) AS m 
WHERE m.maxi = a.Temp AND `Location` = "Outside" OR m.mini = a.Temp AND `Location` = "Outside" 
ORDER BY `a`.`Time` DESC Limit 1 

何が起こっているかは、場所に関係なく、最低温度と最高温度をとっていることです。私はそれを「外側」の場所の最低気温と最高気温を見つける必要があります。

誰でも手助けできますか?

+0

サブクエリに 'WHERE'句を入れてください。 –

+3

カッコなしで 'AND'と' OR'を混在させないでください。 – aynber

+0

サンプルデータと達成しようとしている結果(実際にこのクエリで得られた出力とはどのように違いますか)を提供できますか? – Mureinik

答えて

0
SELECT * 
FROM Chicken AS a, 
    (SELECT MIN(Temp) AS mini, MAX(Temp) AS maxi 
     FROM Chicken 
    ) AS m 
WHERE (m.maxi = a.Temp AND `Location` = "Outside") OR (m.mini = a.Temp AND `Location` = "Outside") 
ORDER BY `a`.`Time` DESC Limit 1 

これはあなたのために働くかもしれません。

+0

ありがとうございます。元のクエリと同じ問題があり、場所に関係なく最低温度と最高温度が選択されています。 –