Vérifier une requête SQL

Fermé
safowan Messages postés 174 Date d'inscription lundi 25 juin 2007 Statut Membre Dernière intervention 22 juin 2022 - 8 juin 2012 à 12:14
DROE Messages postés 148 Date d'inscription mardi 5 mai 2009 Statut Membre Dernière intervention 26 juillet 2012 - 8 juin 2012 à 21:13
Bonjour,

j'aime bien vérifier la syntaxe de cette requête et merci d'avance :

La question est : Quel est le produit le plus cher ?

Ma réponse est :
                            select nom_produit 
                            from produit
                            having Max(prix);


Est ce que ma réponse est juste ?

2 réponses

DROE Messages postés 148 Date d'inscription mardi 5 mai 2009 Statut Membre Dernière intervention 26 juillet 2012 48
8 juin 2012 à 21:13
Sous Oracle c'est

SELECT nom_produit
FROM produit
WHERE ROWNUM=1
ORDER BY prix DESC;

Mais c'est pas propre comme méthode.

SELECT   nom_produit
  FROM   produit
 WHERE   prix IN (SELECT   MAX (prix) FROM produit)

Cette requête renvois le nom du produit le plus cher mais aussi les autres noms de produits si le prix le plus cher est identique.

DROE
http://www.dba-ora.fr
1
alors ne "having" n'est dispo qu'après un group by.
après tu ne peux pas faire max(prix) parce qu'on ne connait pas à priori toutes les valeurs des produits. Il faut soit comparer le prix avec le prix de tous les autres produits individuellement, soit tu peux peut-être faire :
SELECT TOP1 nom_produit
FROM produit
ORDER BY prix DESC;

pour trier tes produits par prix décroissant, et sélectionner juste le 1er
-1
enfin ça c'est la syntaxe sql server, si tu utilises mysql ou oracle, ce sera :
SELECT nom_produit
FROM produit
ORDER BY prix DESC
LIMIT 1;
0