Précédent Remonter Suivant

Chapitre 5  SQL : Fournisseurs - Produits - Clients

5.1  Schéma

Les exemples suivants sont tirés du livre A Guide to DB, Third Edition de C.J. Date.
CREATE TABLE FOURNISSEUR
        ( F#            CHAR(5)         NOT NULL,
          FNOM          CHAR(20)        NOT NULL WITH DEFAULT,
          STATUS        SMALLINT        NOT NULL WITH DEFAULT,
          VILLE         CHAR(15)        NOT NULL WITH DEFAULT,
        PRIMARY KEY ( F# ) );

CREATE TABLE PRODUIT
        ( P#            CHAR(6)         NOT NULL,
          PNOM          CHAR(20)        NOT NULL WITH DEFAULT,
          COULEUR       CHAR(6)         NOT NULL WITH DEFAULT,
          POIDS         SMALLINT        NOT NULL WITH DEFAULT,
        PRIMARY KEY ( P# ) );

CREATE TABLE CLIENT
        ( C#            CHAR(6)         NOT NULL,
          CNOM          CHAR(20)        NOT NULL WITH DEFAULT,
          VILLE         CHAR(15)        NOT NULL WITH DEFAULT,
        PRIMARY KEY ( C# ) );

CREATE TABLE COMMANDE
        ( F#            CHAR(5)         NOT NULL,
          P#            CHAR(6)         NOT NULL,
          C#            CHAR(6)         NOT NULL,
          QTE           SMALLINT,
        PRIMARY KEY ( F#, P#, C# ) );

CREATE UNIQUE INDEX FX ON FOURNISSEUR ( F# );

5.2  Requêtes

Exprimer les requêtes suivantes en SQL.
Requête 1 :
Toutes les informations sur les clients.
        SELECT C#, CNOM, VILLE
          FROM CLIENT;
ou
        SELECT *
          FROM CLIENT;
Requête 2 :
Toutes les informations sur les clients à Paris.
        SELECT *
          FROM CLIENT
         WHERE VILLE = 'Paris';
Requête 3 :
La liste triée des numéros des fournisseurs du client avec le numéro C1.
        SELECT DISTINCT F#
          FROM COMMANDE
         WHERE C# = 'C1'
         ORDER BY F#;
Requête 4 :
Les commandes avec une quantité entre 300 et 750.
        SELECT *
          FROM COMMANDE
         WHERE QTE >= 300 AND QTE <= 750;
ou
        SELECT *
          FROM COMMANDE
         WHERE QTE BETWEEN 300 AND 750;
Requête 5 :
Les commandes avec une quantité différente de NULL.
        SELECT *
          FROM COMMANDE
         WHERE QTE IS NOT NULL;
ou
        SELECT *
          FROM COMMANDE
         WHERE QTE = QTE;
Requête 6 :
Les numéros des clients qui sont situés dans une ville qui commence par ``P''.
        SELECT C#
          FROM CLIENTS
         WHERE VILLE LIKE 'P%';
ou
        SELECT C#
          FROM CLIENTS
         WHERE SUBSTR (VILLE, 1, 1) = 'P';
Requête 7 :
Les numéros des fournisseurs et des clients qui sont situés dans la même ville.
        SELECT F#, C#
          FROM FOURNISSEUR, CLIENT
         WHERE FOURNISSEUR.VILLE = CLIENT.VILLE;
Requête 8 :
Les numéros des fournisseurs et des clients qui ne sont pas situés dans la même ville.
        SELECT F#, C#
          FROM FOURNISSEUR, CLIENT
         WHERE NOT FOURNISSEUR.VILLE = CLIENT.VILLE;
ou
        SELECT F#, C#
          FROM FOURNISSEUR, CLIENT
         WHERE FOURNISSEUR.VILLE <> CLIENT.VILLE;
Requête 9 :
Les numéros des produits fournis par des fournisseurs Parisiens.
        SELECT DISTINCT P#
          FROM COMMANDE, FOURNISSEUR
         WHERE COMMANDE.F# = FOURNISSEUR.F# 
           AND VILLE = 'Paris';
Requête 10 :
Les numéros des produits fournis par des fournisseurs Parisiens à des clients Marseillais.
        SELECT DISTINCT P#
          FROM COMMANDE, FOURNISSEUR, CLIENT
         WHERE COMMANDE.F# = FOURNISSEUR.F# 
           AND COMMANDE.C# = CLIENT.C#
           AND FOURNISSEUR.VILLE = 'Paris'
           AND CLIENT.VILLE = 'Marseille';
Requête 11 :
Les couples de villes (vi, vj) tel qu'il existe au moins un fournisseur dans la ville vi d'un client dans la ville vj.
        SELECT DISTINCT FOURNISSEUR.VILLE, CLIENT.VILLE
          FROM COMMANDE, FOURNISSEUR, CLIENT
         WHERE COMMANDE.F# = FOURNISSEUR.F#
           AND COMMANDE.C# = CLIENT.C#;
Requête 12 :
Les numéros des produits fournis à des clients situés dans la même ville que leurs fournisseurs.
        SELECT DISTINCT COMMANDE.P# FROM COMMANDE, FOURNISSEUR, CLIENT
          WHERE COMMANDE.F# = FOURNISSEUR.F# AND COMMANDE.C# = CLIENT.C# 
            AND CLIENT.VILLE = FOURNISSEUR.VILLE;
Requête 13 :
Les numéros des clients qui ont au moins un fournisseur situé dans une autre ville.
        SELECT DISTINCT CLIENT.C#
          FROM COMMANDE, FOURNISSEUR, CLIENT
         WHERE COMMANDE.F# = FOURNISSEUR.F#
           AND COMMANDE.C# = CLIENT.C#
           AND CLIENT.VILLE <> FOURNISSEUR.VILLE;
Requête 14 :
Les couples de produits qui sont fournis par le même fournisseur.
        SELECT DISTINCT A.P#, B#.P#
          FROM COMMANDE A, COMMANDE B
         WHERE A.F# = B.F#
           AND A.P# > B.P#; 

Précédent Remonter Suivant