Vérifier une requête SQL

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. 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;