IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage SQL Discussion :

Max en algèbre relationelle


Sujet :

Langage SQL

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Novembre 2010
    Messages
    22
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2010
    Messages : 22
    Par défaut Max en algèbre relationelle
    Bonjour,

    J'ai des questions que ma prof a donné en cours, pour "aller plus loin" de ce qu'on a vu mais je sèche vraiment...Elle ne compte pas les corriger, et j'ai essayer de trouver de l'aide dans les livres mais sans vain...

    Soit les schémas:

    Fournisseurs(fid :int,fnom :string,fad :string)
    Articles(aid :int,anom :string,acoul :string)
    Catalogue(fid :int,aid :int,prix :real)

    1) Trouver l'article le plus cher.
    2 ) Trouver pour chaque article le fournisseur qui le vend le plus cher.

    Je pense que si j'ai la une, la deux sera simple. J'ai pensé à utiliser une algèbre relationnelle étendue (avec des fonctions max,...), mais on n'a pas vu ça en cours donc je pense pas...

    Si la question est faisable, merci de me donner des pistes.

    Cordialement.

  2. #2
    Expert confirmé
    Homme Profil pro
    Inscrit en
    Mai 2002
    Messages
    3 173
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Mai 2002
    Messages : 3 173
    Par défaut
    Bonjour,


    Pour la 1 regardez du côté des fonctions d'agrégation.

    Pour le 2 il faudra passer par un group by : http://sqlpro.developpez.com/cours/sqlaz/ensembles/ (et une sous-requête)

  3. #3
    Expert éminent
    Avatar de fsmrel
    Homme Profil pro
    Spécialiste en bases de données
    Inscrit en
    Septembre 2006
    Messages
    8 218
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Spécialiste en bases de données
    Secteur : Conseil

    Informations forums :
    Inscription : Septembre 2006
    Messages : 8 218
    Billets dans le blog
    16
    Par défaut
    Bonjour,

    J'utilise ici SQL Server.

    Le catalogue des prix :

    Code sql : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    declare @Catalogue as table
    (
            FourId    char(3) not null
          , ArtId     char(3) not null
          , CatPrix   int     not null
    primary key (FourId, ArtId)
    ) ;
     
    insert into @Catalogue (FourId, ArtId, CatPrix) VALUES ('f01', 'a01', 1500) ;
    insert into @Catalogue (FourId, ArtId, CatPrix) VALUES ('f02', 'a02', 1000) ;
    insert into @Catalogue (FourId, ArtId, CatPrix) VALUES ('f03', 'a03', 3000) ;
    insert into @Catalogue (FourId, ArtId, CatPrix) VALUES ('f04', 'a04', 2000) ;
    insert into @Catalogue (FourId, ArtId, CatPrix) VALUES ('f01', 'a05', 3000) ;

    Si vous avez droit à EXISTS, pour trouver le prix le plus cher :

    Code sql : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    select *
    from   @Catalogue as x 
    where  not exists 
          (select *
           from   @Catalogue as y 
           where  x.CatId <> y.CatId
           and    x.CatPrix < y.CatPrix)  ;

    Raidonnez comme si x et y représentaient deux tables distinctes.

  4. #4
    Expert éminent
    Avatar de fsmrel
    Homme Profil pro
    Spécialiste en bases de données
    Inscrit en
    Septembre 2006
    Messages
    8 218
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Spécialiste en bases de données
    Secteur : Conseil

    Informations forums :
    Inscription : Septembre 2006
    Messages : 8 218
    Billets dans le blog
    16
    Par défaut
    Si vous avez droit à " ALL" :

    Code sql : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    select distinct *
    from   @Catalogue as x
    where  x.CatPrix >= ALL (select y.CatPrix
                             from   @Catalogue as y
                             where  x.FourId <> y.FourId) ;

  5. #5
    Rédacteur

    Avatar de SQLpro
    Homme Profil pro
    Expert bases de données / SQL / MS SQL Server / Postgresql
    Inscrit en
    Mai 2002
    Messages
    22 010
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Expert bases de données / SQL / MS SQL Server / Postgresql
    Secteur : Conseil

    Informations forums :
    Inscription : Mai 2002
    Messages : 22 010
    Billets dans le blog
    6
    Par défaut
    L'approche la plus près de l'algèbre relationnelle est effectivement la comparaison ensembliste >= ALL ( ... )
    Sinon, cela s'écrit de façon très particulière en AR et peu d'auteur en ont donné d'exemple....
    A lire :
    http://en.wikipedia.org/wiki/Relatio...ra#Aggregation

    A +
    Frédéric Brouard - SQLpro - ARCHITECTE DE DONNÉES - expert SGBDR et langage SQL
    Le site sur les SGBD relationnels et le langage SQL: http://sqlpro.developpez.com/
    Blog SQL, SQL Server, SGBDR : http://blog.developpez.com/sqlpro
    Expert Microsoft SQL Server - M.V.P. (Most valuable Professional) MS Corp.
    Entreprise SQL SPOT : modélisation, conseils, audit, optimisation, formation...
    * * * * * Expertise SQL Server : http://mssqlserver.fr/ * * * * *

  6. #6
    Membre averti
    Profil pro
    Inscrit en
    Novembre 2010
    Messages
    22
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2010
    Messages : 22
    Par défaut
    Merci à vous pour votre aide , je m'y pencherai en peu plus dessus demain.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Algèbre relationelle : bloqué !
    Par lapetitebeurette dans le forum Langage SQL
    Réponses: 17
    Dernier message: 22/06/2015, 15h51
  2. Utilisation de MAX dans une requête SQL
    Par Evil onE dans le forum Langage SQL
    Réponses: 7
    Dernier message: 15/06/2004, 18h38
  3. Max
    Par MASSAKA dans le forum Requêtes
    Réponses: 8
    Dernier message: 14/01/2004, 17h44
  4. opengl et 3dstudio max
    Par maamar dans le forum OpenGL
    Réponses: 3
    Dernier message: 28/09/2002, 20h48
  5. taille max du nom d'un champ
    Par hna dans le forum Paradox
    Réponses: 2
    Dernier message: 28/07/2002, 02h40

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo