Vérifier une requête SQL

safowan Messages postés 202 Statut Membre -  
DROE Messages postés 148 Date d'inscription   Statut Membre Dernière intervention   -
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

  1. DROE Messages postés 148 Date d'inscription   Statut Membre Dernière intervention   48
     
    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
  2. Arch
     
    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
    1. Arch
       
      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