Académique Documents
Professionnel Documents
Culture Documents
/*
Proposition de corrig du TD SGBD
AU : 2014-2015
*/
/* **************************************************************************
PARTI I: Cration des tables
************************************************************************** */
------------------------------------------------------------------------------ 1. Crer la base de donnes et ses tables.
----------------------------------------------------------------------------create database Delizioso
use Delizioso
/*
Il faut faire attention l'ordre de cration des tables
( cause des FK)
*/
Pr.TIKITO
Corrig TD SGBD
AU : 2014-2015
Pr.TIKITO
Corrig TD SGBD
select *
from commande
------------------------------------------------------------------------------ 4. Insrer deux serveurs
----------------------------------------------------------------------------insert into serveur(id_serv,nom,prenom,birth_date,salaire)
values (1001, 'Toto','LOLO',1990,600)
AU : 2014-2015
Pr.TIKITO
Corrig TD SGBD
select *
from facture
------------------------------------------------------------------------------6. Insrer une facture comportant trois commandes de catgories diffrentes
----------------------------------------------------------------------------/*
1-les valeurs donnes pour #id_cmde doivent correspondre aux 3
catgories (ref question3)
2-Ici c'est une autre syntaxe pour insrer plusieurs lignes en
mme temps
*/
insert into Facture (num_fact, #id_cmde ,#id_serv,qt,num_tab)
values (114290,1,1008,1,4),
(114290,2,1008,3,4),
(114290,4,1008,2,4)
AU : 2014-2015
Pr.TIKITO
Corrig TD SGBD
/* **************************************************************************
PARTI II: Manipulation des donnes
************************************************************************** */
------------------------------------------------------------------------------1. Quelles sont les commandes de la catgorie Dessert
----------------------------------------------------------------------------SELECT cmd.*
FROM commande cmd, categorie cat
WHERE id_cat = #id_cat
AND cat.lib='dessert'
------------------------------------------------------------------------------2. Calculer les quantits commandes de la commande frites
----------------------------------------------------------------------------SELECT SUM (qt) as 'Quantits Frites'
FROM facture ,commande
WHERE id_cmde = #id_cmde
and lib='frites'
------------------------------------------------------------------------------3. Afficher le nom des serveurs, leur ge, et le nombre de factures quils
ont pass aujourdhui.
----------------------------------------------------------------------------/*
1-year(getdate()) pour donner uniquement l'anne en cours, vu que
birth_date est uniquement l'anne de naissance
2-count(distinct(num_fact)) pour ne comptabiliser qu'une seule
fois la facture, mme si elle concerne plusieurs commandes
3-convert(date, GETDATE()) pour donner uniquement le jour le mois
et l'anne en cours, et non pas l'heure aussi
4-il faut faire attention de mentionner les champs nom,birth_date
dans la clause group by
*/
AU : 2014-2015
Pr.TIKITO
Corrig TD SGBD
SELECT nom,
year(getdate())- birth_date as Age,
count(distinct(num_fact)) as 'nombre de factures'
FROM facture ,serveur
WHERE id_serv = #id_serv
AND date_fact= convert(date, GETDATE())
GROUP BY nom,birth_date
------------------------------------------------------------------------------4. Quel est le prix de la commande la plus chre pour chaque catgorie
----------------------------------------------------------------------------SELECT #id_cat, MAX(px)as prix_max
FROM commande
GROUP BY #id_cat
/*
Mais si on veut le dtail des commandes les plus chres pour
chaque catgorie,
on devrait utiliser une sous-requte corrle
*/
SELECT *
FROM Commande C1
where px IN (SELECT MAX(px)as prix_max
FROM commande
WHERE #id_cat = C1.#id_cat
GROUP BY #id_cat)
------------------------------------------------------------------------------5. Afficher le dtail de la facture numro : 114290 (Num de la facture, nom
-serveur, libell de la commande, prix unitaire de la commande, quantit
-commande, prix_TTC) [ Prix_ttc = (prix unitaire * qt)*1.2 ]
----------------------------------------------------------------------------SELECT num_fact AS 'Num de la facture',
nom AS 'Nom du serveur',
lib AS 'libell de la commande',
px AS 'prix unitaire de la commande',
qt AS 'quantit commande',
px*qt*1.2 as prix_TTC
FROM Facture, Serveur,Commande
WHERE id_serv=#id_serv
AND id_cmde=#id_cmde
AND num_fact=114290
AU : 2014-2015
Pr.TIKITO
Corrig TD SGBD
AU : 2014-2015
Pr.TIKITO