132 lines
2.5 KiB
SQL
132 lines
2.5 KiB
SQL
--1 Ajouter une colonne intitulée “categorie_id” à la table contenant les commandes. Cette colonne contiendra une valeur numérique.
|
|
ALTER TABLE
|
|
commandes
|
|
ADD
|
|
categorie_id INT(10) UNSIGNED DEFAULT NULL
|
|
;
|
|
|
|
|
|
|
|
|
|
--2 Enregistrer la valeur de la catégorie, en suivant les règles suivantes (en une seule requête) :
|
|
UPDATE commandes
|
|
SET categorie_id =
|
|
CASE
|
|
WHEN
|
|
commande_cache_prix_total < 200
|
|
THEN 1
|
|
WHEN
|
|
commande_cache_prix_total BETWEEN 200 AND 500
|
|
THEN 2
|
|
WHEN
|
|
commande_cache_prix_total BETWEEN 500 AND 1000
|
|
THEN 3
|
|
ELSE 4
|
|
END
|
|
;
|
|
|
|
|
|
|
|
--3 Créer une table intitulée “categories” qui contiendra le descriptif de ces catégories.
|
|
CREATE TABLE categories (
|
|
categorie_id INT(10) UNSIGNED PRIMARY KEY,
|
|
categorie_description VARCHAR(255)
|
|
)
|
|
;
|
|
|
|
INSERT INTO
|
|
categories (
|
|
categorie_id,
|
|
categorie_description
|
|
)
|
|
VALUES
|
|
(1, 'Moins de 200€'),
|
|
(2, 'Entre 200€ et 500€'),
|
|
(3, 'Entre 500€ et 1.000€'),
|
|
(4, 'Supérieures à 1.000€')
|
|
;
|
|
|
|
|
|
--4 Créer la clé étrangère entre la table “categories” et la colonne “categorie_id” de la table “commandes”.
|
|
SELECT
|
|
FROM
|
|
INNER JOIN
|
|
ON
|
|
WHERE
|
|
GROUP BY
|
|
ORDER BY
|
|
LIMIT
|
|
;
|
|
|
|
|
|
|
|
--5 Insérer les 4 descriptifs de chaque catégorie au sein de la table précédemment créée.
|
|
SELECT
|
|
FROM
|
|
INNER JOIN
|
|
ON
|
|
WHERE
|
|
GROUP BY
|
|
ORDER BY
|
|
LIMIT
|
|
;
|
|
|
|
|
|
|
|
--6 Supprimer toutes les commandes (et les lignes des commandes) inférieures au 1er février 2019. Cela doit être effectué en 2 requêtes maximum.
|
|
SELECT
|
|
FROM
|
|
INNER JOIN
|
|
ON
|
|
WHERE
|
|
GROUP BY
|
|
ORDER BY
|
|
LIMIT
|
|
;
|
|
|
|
|
|
--trigger 2
|
|
|
|
DELIMITER //
|
|
CREATE TRIGGER define_gategory
|
|
BEFORE INSERT
|
|
ON commandes FOR EACH ROW
|
|
BEGIN
|
|
SET NEW.categorie_id =
|
|
CASE
|
|
WHEN
|
|
NEW.commande_cache_prix_total < 200
|
|
THEN 1
|
|
WHEN
|
|
NEW.commande_cache_prix_total BETWEEN 200 AND 500
|
|
THEN 2
|
|
WHEN
|
|
NEW.commande_cache_prix_total BETWEEN 500 AND 1000
|
|
THEN 3
|
|
ELSE 4
|
|
END;
|
|
END //
|
|
DELIMITER ;
|
|
|
|
|
|
DELIMITER //
|
|
CREATE TRIGGER define_gategory_update
|
|
BEFORE UPDATE
|
|
ON commandes FOR EACH ROW
|
|
BEGIN
|
|
SET NEW.categorie_id =
|
|
CASE
|
|
WHEN
|
|
NEW.commande_cache_prix_total < 200
|
|
THEN 1
|
|
WHEN
|
|
NEW.commande_cache_prix_total BETWEEN 200 AND 500
|
|
THEN 2
|
|
WHEN
|
|
NEW.commande_cache_prix_total BETWEEN 500 AND 1000
|
|
THEN 3
|
|
ELSE 4
|
|
END;
|
|
END //
|
|
DELIMITER ;
|