2017-03-15 6 views
0

ためのSQLに私はいつも好奇心てきた:MINとMAXは、指定された項目タイプと品質

は私が売られている靴のテーブルがあるとし、いくつかのナイキは、ありますアディダス、テバ、スティーブ・マッデン など

CREATE TABLE Shoes(
    id int not null auto_increment primary key, 
    brand int not null, /* NIKE: 1, ADIDAS: 2, TEVA: 4, STEVE_MADDEN: 8 */ 
    quality int not null /* NEW: 1, USED: 2*/ 
    price datetime not null, 
    posted timestamp default current_timestamp 
); 

今、私が最も低く、特定のブランドと品質の最高価格を見てみたいです。だから これは私が持っているものですが、より良い方法があるかどうかを知りたかったので、 という非常に大きなデータベースを考えてみてください。

はのは私が は、次の手順を実行しますNIKEの靴(新しいおよび使用)のための最高と最低の価格を知りたいとしましょう:

SELECT MIN(price) AS lowest, MAX(price) AS highest FROM Shoes WHERE brand = 1 AND quality = 1; 
SELECT MIN(price) AS lowest, MAX(price) AS highest FROM Shoes WHERE brand = 1 AND quality = 2; 

はこれを行うには良い方法はありますか?

答えて

1

これは1つのクエリで行うことができ、これは2行と1つのフィールドを返します。私はそれを行うことができる方法各ブランドに関連する情報を持つテーブルでそれを参加したい場合は

SELECT quality, MIN(price) AS lowest, 
    MAX(price) AS highest 
FROM Shoes 
WHERE 
    brand = 1 
AND 
    quality IN(1,2) 
GROUP BY quality 
ORDER BY quality; 

サンプルとは

SELECT quality, MIN(s.price) AS lowest, 
MAX(s.price) AS highest, 
t.OneField 
FROM Shoes s 
LEFT JOIN YourTable t ON s.brand = t.TheBrandField 
WHERE 
    s.brand = 1 
AND 
    s.quality IN(1,2) 
GROUP BY s.quality 
ORDER BY quality; 
+0

に参加しますか?私は参加することができますが、それは各行に同じ情報を追加することは繰り返します! – Gacci

+0

@ Gacci - 私は答えを –

+0

に参加させてサンプルを追加しても、それは私に各行に余分な情報を与えません! – Gacci