Skip to article frontmatterSkip to article content
Site not loading correctly?

This may be due to an incorrect BASE_URL configuration. See the MyST Documentation for reference.

Atelier - Création des vues

APERTO-NOTA

Atelier : Gestion des vues

1. Créer une vue pour les clients en province

Solution to Exercise #
CREATE VIEW v_clients_province AS
SELECT societe, adresse, telephone, ville
FROM clients
WHERE pays = 'France'
AND code_postal NOT LIKE '75%' 
AND code_postal NOT LIKE '77%'
AND code_postal NOT LIKE '78%' 
AND code_postal NOT LIKE '91%'
AND code_postal NOT LIKE '92%' 
AND code_postal NOT LIKE '93%'
AND code_postal NOT LIKE '94%' 
AND code_postal NOT LIKE '95%';

Voici un exercice supplémentaire pour la création d’une vue :

2. Créer une vue pour les produits disponibles en stock

Solution to Exercise #
CREATE VIEW v_produits_disponibles AS
SELECT ref_produit, nom_produit, prix_unitaire, unites_stock
FROM produits
WHERE unites_stock > 0;

3. Supprimer une vue existante

Solution to Exercise #
DROP VIEW v_produits_disponibles;

4. Création de Vue Matérialisée, Jointure et Filtrage

Solution to Exercise #
-- Création de la vue matérialisée initiale
CREATE MATERIALIZED VIEW vue_commandes_clients AS
SELECT 
    c.CODE_CLIENT,
    c.SOCIETE,
    co.NO_COMMANDE,
    co.DATE_COMMANDE,
    dc.REF_PRODUIT,
    dc.QUANTITE,
    dc.PRIX_UNITAIRE
FROM 
    clients c
JOIN 
    commandes co ON c.CODE_CLIENT = co.CODE_CLIENT
JOIN 
    details_commandes dc ON co.NO_COMMANDE = dc.NO_COMMANDE;

-- Modification de la vue pour inclure les informations des employés
CREATE MATERIALIZED VIEW vue_commandes_clients_employes AS
SELECT 
    c.CODE_CLIENT,
    c.SOCIETE,
    co.NO_COMMANDE,
    co.DATE_COMMANDE,
    dc.REF_PRODUIT,
    dc.QUANTITE,
    dc.PRIX_UNITAIRE,
    e.NOM,
    e.PRENOM
FROM 
    clients c
JOIN 
    commandes co ON c.CODE_CLIENT = co.CODE_CLIENT
JOIN 
    details_commandes dc ON co.NO_COMMANDE = dc.NO_COMMANDE
JOIN 
    employes e ON co.NO_EMPLOYE = e.NO_EMPLOYE;

-- Ajout d'un filtre pour les commandes après le 1er janvier 2023
CREATE MATERIALIZED VIEW vue_commandes_clients_employes_filtre AS
SELECT 
    c.CODE_CLIENT,
    c.SOCIETE,
    co.NO_COMMANDE,
    co.DATE_COMMANDE,
    dc.REF_PRODUIT,
    dc.QUANTITE,
    dc.PRIX_UNITAIRE,
    e.NOM,
    e.PRENOM
FROM 
    clients c
JOIN 
    commandes co ON c.CODE_CLIENT = co.CODE_CLIENT
JOIN 
    details_commandes dc ON co.NO_COMMANDE = dc.NO_COMMANDE
JOIN 
    employes e ON co.NO_EMPLOYE = e.NO_EMPLOYE
WHERE 
    co.DATE_COMMANDE > '1997-01-01';