Vous êtes sur la page 1sur 3

TD 7

PARTIE A :
1) Création des tables:

CREATE TABLE Commandes (

Num INT PRIMARY KEY AUTO_INCREMENT,

Date DATE,

Client VARCHAR(255),

Montant DECIMAL(10,2)

);

2) Insertion des données:

CREATE TABLE Lignes_Commandes (

NumCom INT,

NumLigne INT,

CodeP INT,

Qt INT

);

INSERT INTO Commandes (Date, Client, Montant)

VALUES ('2007-03-01', 'Ziani', 3000),

('2007-08-03', 'Madani', 5000),

('2007-07-01', 'Malki', 6000),

('2007-08-04', 'Daoudi', 2500);

INSERT INTO Lignes_Commandes (NumCom, NumLigne, CodeP, Qt)

VALUES (1, 1, 1, 2),

(1, 2, 8, 30),

(1, 3, 2, 1),
(2, 4, 3, 1),

(2, 5, 1, 20),

(3, 6, 1, 3),

(3, 7, 3, 1),

(3, 8, 8, 2),

(3, 9, 5, 1);

PARTIE B :
1) Liste des commandes et leurs lignes:

SELECT C.Num, C.Date, C.Client, C.Montant, LC.NumLigne, LC.CodeP, LC.Qt

FROM Commandes C

INNER JOIN Lignes_Commandes LC ON C.Num = LC.NumCom;

2) Liste des commandes même celles ne comportant aucune ligne:

SELECT * FROM Commandes;

3) Liste des lignes de commandes même si la commande correspondante n’existe pas:

SELECT * FROM Lignes_Commandes;

4) Liste de toutes les commandes avec leurs lignes, les commandes sans lignes et les lignes
sans commande correspondante:
SELECT *
FROM Commandes C
FULL OUTER JOIN Lignes_Commandes LC ON C.Num = LC.NumCom
ORDER BY C.Num, LC.NumLigne;
5) Visualisation des résultats:

PARTIE C :
1) Supprimer les lignes commandes qui ne représentent aucune commandes:
DELETE FROM Lignes_Commandes
WHERE NumCom NOT IN (SELECT Num FROM Commandes);
2) Liste des produits et leurs Total Qt vendues:
SELECT CodeP, SUM(Qt) AS TotalQt
FROM Lignes_Commandes
GROUP BY CodeP;
3) Les commandes qui ont des Qt supérieur ou égale à 10:
SELECT C.Num, C.Date, C.Client, C.Montant
FROM Commandes C
INNER JOIN Lignes_Commandes LC ON C.Num = LC.NumCom
WHERE LC.Qt >= 10;
4) Les produits vendus le mois 8:
SELECT CodeP, SUM(Qt) AS TotalQt
FROM Lignes_Commandes
INNER JOIN Commandes ON Lignes_Commandes.NumCom = Commandes.Num
WHERE MONTH(Commandes.Date) = 8
GROUP BY CodeP;

Vous aimerez peut-être aussi