• Aucun résultat trouvé

Devoir Entreprise de déménagements

N/A
N/A
Protected

Academic year: 2022

Partager "Devoir Entreprise de déménagements"

Copied!
8
0
0

Texte intégral

(1)

Devoir – Entreprise de déménagements

Ouvrier (nOuv, nom, prenom, taille, poids) Affectation (nOuv, nCamion, dateDeb, dateFin)

Demenagement (nDem, adrDep, villeDep, adrArr, villeArr, date, volume) CamionDem (nCamion, nDem)

Vehicule (nCamion, marque, capacite, nbKm)

Quelques données pour mieux comprendre…

nOuv Prenom nom

1 Jean Cérien …

2 Jean Bon …

… … … …

Ouvrier

nCamion nDem

100 10

100 20

200 20

… …

CamionDem

nDem villeDep villeArr date volume 10 Versailles Medon 1/11/2021 35 … 20 Versailles Medon 2/12/2021 45 …

… … … …

Déménagement

nCamion capacité marque

100 20 Renault …

200 30 Wolks …

… … … …

Véhicule

nOuv nCamion dateDeb dateFin 1 100 1/10/2021 30/11/2021 2 100 1/10/2021 30/11/2021 2 200 1/08/2021 31/08/2021

… … … …

Affectation

N’hésitez pas à utiliser ces données pour « tester » vos requêtes

(2)

1. Nom et prénom des ouvriers n’ayant été affectés qu’à des camions de marque Renault.

Véhicule

marque ≠

‘Renault’

nCamion = nCamion Affectation

nOuv

-

nOuv

Affectation

nOuv= nOuv Ouvrier

nom, prénom

SELECT nom, prenom

FROM Ouvrier O, AffectationA1 WHERE O.nOuv=A1.nOuv AND O.nOuvNOT IN

( SELECT A2.nOuv

FROM Affectation A2, Vehicule V WHERE A2.nCamion=V.nCamion AND marque <> ‘Renault’) ; C’est un ouvrier qui a déjà

été affecté à un chantier, donc table Affectation (on peut avoir des ouvriers qui n’ont jamais été affectés

dans la table Ouvrier).

Aussi possible avec A1.nOuv.

SELECT nom, prenom

FROM Ouvrier O, AffectationA1 WHERE O.nOuv=A1.nOuv AND O.nOuvNOT EXISTS

( SELECT *

FROM Affectation A2, Vehicule V WHERE A2.nCamion=V.nCamion AND marque <> ‘Renault’

AND O.nOuv= A2.nOuv ) ; Aussi possible

avec A1.nOuv.

2. Capacité et nombre de kilomètres des camions ayant réalisé des déménagements le 31 décembre 2020 et le 1er janvier 2021.

CamionDem Demenagement

date =

’31/12/2020’

nDem = nDem

CamionDem

Demenagement

date =

‘1/1/2021’

nDem = nDem

nCamion

nCamion

nCamion= nCamion Vehicule

capacité, nbKm SELECT capacite, nbKm

FROM Vehicule V, CamionDem C1, Demenagement D1 WHERE V.nCamion=C1.nCamion

AND C1.nDem = D1.nDem AND D1.date=’2020-12-31’

AND V.nCamionIN

( SELECT C2.nCamion

FROM CamionDemC2, Demenagement D2 WHERE C2.nDem=D2.nDem

AND D2.date=’2021-01-01’) ; SELECT capacite, nbKm

FROM Vehicule V, CamionDem C1, Demenagement D1 WHERE V.nCamion=C1.nCamion

AND C1.nDem = D1.nDem AND D1.date=’2020-12-31’

AND EXISTS( SELECT *

FROM CamionDemC2, Demenagement D2 WHERE C2.nDem=D2.nDem

AND D2.date=’2021-01-01’

AND V.nCamion= D2.nCamion ) ; Aussi possible avec

D1.nCamion.

Aussi possible avec D1.nCamion.

(3)

3. Marque des camions impliqués dans le déménagement le plus important (en volume).

Demenagement

Demenagement D1 Demenagement D2

D1.volume < D2 volume

nDem

-

D1.nDem

Attention à bien utiliser nDem(et pas nCamion), car un même camion peut participer à plusieurs déménagements (et donc le même camion peut participer au déménagement le + important, mais aussi à d’autres – importants)

nDem = nDem CamionDem

Vehicule

nCamion = nCamion marque SELECT marque

FROM Vehicule V, CamionDem C, Demenagement D WHERE V.nCamion=C.nCamion

AND C.nDem=D.nDem AND D.volume=

( SELECT MAX(volume) FROM Demenagement ) ;

Pour mieux comprendre…

nCamion nDem

100 10

100 20

200 20

CamionDem C

nDem villeDep villeArr date volume 10 Versailles Medon 1/11/2021 35 … 20 Versailles Medon 2/12/2021 45 … 20 Versailles Medon 2/12/2021 45 …

Déménagement D

Pour mieux comprendre pourquoi il faut utiliser nDem (et pas nCamion), on va regarder sur les données ce qui se passe si on l’utilise…

Pour utiliser nCamion, on doit faire une jointure avec CamionDem

Le déménagement n°20est le plus volumineux. Il a utilisé 2 camions (le n°

100et le n°200).

nDem = nDem

D1.volume < D2.volume

nCamion nDem

100 10

100 10

nDem volume …

10 … 35 …

10 … 35 …

nCamion nDem

100 20

200 20

nDem volume …

20 … 45 …

20 … 45 …

D1.volume D2.volume

C1.nCamion D1.nDem C2.nCamion D2.nDem

Si on fait une projection sur C1.nCamion, on perdra le camion n° 100 car il a aussi participé au déménagement n ° 10 (qui est plus petit que le déménagement n° 20).

(4)

Pour mieux comprendre…

nDem volume

10 … 35 …

20 … 45 …

Déménagement D2 Maintenant, si on utilise nDem comme il faut…

On retrouve alors les 2 camions (le n°

100et le n°200) utilisés par le déménagement n°20.

D1.volume < D2.volume

nDem volume …

10 … 35 …

10 … 35 …

nDem volume …

20 … 45 …

20 … 45 …

D1.volume D2.nDem D2.volume D1.nDem

Si on fait une projection sur D1.nDem, on élimine, suite à la différence, le déménagement n ° 10, pour ne garder que le déménagement n° 20.

nDem volume

10 … 35 …

20 … 45 …

Déménagement D1 nDem volume

10 … 35 …

20 … 45 …

Déménagement

nDem

-

D1.nDem

CamionDem

nDem = nDem nCamion nDem

100 10

100 20

200 20

nDem 20

nCamion nDem

100 20

200 20

nDem 20 20

4. Taille et poids des ouvriers de plus de 80 kg ayant travaillé dans tous les camions.

Vehicule

nCamion nOuv,

nCamion Affectation

÷

nOuv= nOuv

Ouvrier

Taille, poids

Poids > 80

SELECT taille, poids FROM Ouvrier O WHERE poids > 80 WHERE NOT EXISTS

( SELECT *

FROM Vehicule V WHERE NOT EXISTS

( SELECT *

FROM Affectation A WHERE A.nOuv=O.nOuv AND A.nCamion=V.nCamion) ) ;

Attention à l’ordre des blocs (et des restrictions, qui doivent venir dans le bon bloc).

(5)

5. Capacité et nombre de kilomètres des camions ayant transporté l’ouvrier Jean Bon ou l’ouvrier Jean Cérien pour des déménagements de Versailles à Meudon.

Demenagement

CamionDem

Vehicule Ouvrier

( nom = ‘Bon’ ⌄ nom = ‘Cérien’ )^ prénom = ‘Jean’

villedep = ‘Versailles’ ^ villeArr = ‘Meudon’

nDem = nDem nOuv = nOuv

Affectation

nCamion = nCamion dateDeb ≤ date ≤ dateFin^

nCamion = nCamion capacité, nbKm Attention double jointure (le

déménagement a dû avoir lieu pendant la période d’affectation de l’ouvrier)

Aussi possible en faisant jointure

« nCamion = nCamion » suivie d’une restriction « dateDeb ≤ date ≤ dateFin »

5. Capacité et nombre de kilomètres des camions ayant transporté l’ouvrier Jean Bon ou l’ouvrier Jean Cérien pour des déménagements de Versailles à Meudon.

SELECT capacite, nbKm

FROM Vehicule V, Ouvrier O, Affectation A, CamionDem C, Demenagement D WHERE V.nCamion=C.nCamion

AND A.nCamion=O.nCamion AND A.nOuv=O.nOuv

AND A.date BETWEEN dateDeb and DateFin AND C.nDem=D.nDem

AND villeDep=’Versailles’

AND villeArr=’Meudon’

AND prenom=’Jean’

AND (nom = ‘Bon’ ORnom=’Cerien’ )

Attention aux parenthèses autour du OR (« ou »), pour séparer les « et »

des « ou », y compris en algèbre.

(6)

Pour mieux comprendre…

nOuv Prenom nom

1 Jean Cérien …

2 Jean Bon …

2 Jean Bon

Ouvrier (après restriction)

nCamion nDem

100 10

100 20

200 20

CamionDem

nDem villeDep villeArr date volume 10 Versailles Medon 1/11/2021 35 … 20 Versailles Medon 2/12/2021 45 … 20 Versailles Medon 2/12/2021 45 … Déménagement (après restriction)

nOuv nCamion dateDeb dateFin 1 100 1/10/2021 30/11/2021 2 100 1/10/2021 30/11/2021 2 200 1/08/2021 31/08/2021 Affectation

Le camion n°200a bien transporté l’ouvrier Jean Bon, mais aucun

déménagement de Versailles à Meudon n’a eu lieu pendant la période de son affectation (l ’affectation était en août alors que le déménagement avec ce camion était en décembre).

Le camion n°200ne devrait PASêtre parmi les réponses…

nOuv Prenom nom

1 Jean Cérien …

2 Jean Bon …

2 Jean Bon

Ouvrier (après restriction)

nCamion nDem

100 10

100 20

200 20

CamionDem

nDem villeDep villeArr date 10 Versailles Medon 1/11/2021 … 20 Versailles Medon 2/12/2021 … 20 Versailles Medon 2/12/2021 … Déménagement (après restriction) nOuv nCamion dateDeb dateFin

1 100 1/10/2021 30/11/2021 2 100 1/10/2021 30/11/2021 2 200 1/08/2021 31/08/2021

Affectation Pour mieux comprendre pourquoi il

nous faut une jointure avec 2 conditions, on va regarder sur les données ce qui se passe si on ne fait pas ça…

nCamion = nCamion

nOuv

1 …

1 …

2 …

2 …

2 …

nOuv nCamion dateDeb dateFin 1 100 1/10/2021 30/11/2021 1 100 1/10/2021 30/11/2021 2 100 1/10/2021 30/11/2021 2 100 1/10/2021 30/11/2021 2 200 1/08/2021 31/08/2021

nCamion nDem

100 10

100 20

100 10

100 20

200 20

nDem … date

10 … 1/11/2021 … 20 … 2/12/2021 … 10 … 1/11/2021 … 20 … 2/12/2021 … 20 … 2/12/2021

(7)

nOuv Prenom nom

1 Jean Cérien …

2 Jean Bon …

2 Jean Bon

Ouvrier (après restriction)

nCamion nDem

100 10

100 20

200 20

CamionDem

nDem villeDep villeArr date 10 Versailles Medon 1/11/2021 … 20 Versailles Medon 2/12/2021 … 20 Versailles Medon 2/12/2021 … Déménagement (après restriction) nOuv nCamion dateDeb dateFin

1 100 1/10/2021 30/11/2021 2 100 1/10/2021 30/11/2021 2 200 1/08/2021 31/08/2021 Affectation

nCamion = nCamion dateDeb ≤ date ≤ dateFin^

nOuv

1 …

2 …

nOuv nCamion dateDeb dateFin 1 100 1/10/2021 30/11/2021 2 100 1/10/2021 30/11/2021

nCamion nDem

100 10

100 10

nDem … date

10 … 1/11/2021 … 10 … 1/11/2021

Maintenant, on applique la jointure sur les deux conditions (nCamionet dateDeb ≤ date ≤ dateFin)…

On retrouve bien le camion n° 100, qui a transporté les ouvriers dans des déménagements de Versailles à Meudon.

6. Nombre de camions par déménagement au cours de l’année 2020, uniquement pour les déménagements nécessitant au moins 2 camions.

SELECT COUNT(*), D.nDem

FROM CamionDem C, Demenagement D WHERE C.nDem=D.nDem

AND D.date between ‘2020-01-01’ AND ‘2020-12-31’

GROUP BY D.nDem HAVING COUNT(*) >= 2

Aussi possible avec C.nDem.

7. Numéro, marque et capacité des camions ayant effectué des déménagements dont la ville de départ finit par

«Seine » (Ivry sur Seine, Vitry sur Seine, etc.).

SELECT V.nCamion, marque, capacite

FROM Vehicule V, CamionDem C, Demenagement D WHERE D.nDem=C.nDem

AND C.nCamion=V.nCamion AND villeDep LIKE ‘%Seine’

Attention : pas de Group By ici.

(8)

8. Numéro, marque et capacité des camions ayant participé à des déménagements de Paris vers Lyon, triés par capacité décroissante.

SELECT V.nCamion, marque, capacite

FROM Vehicule V, CamionDem C, Demenagement D WHERE V.nCamion=C.nCamion

AND C.nDem = D.nDem AND villeDep=’Paris’

AND villeArr=’Lyon’

ORDER BY capaciteDESC

Attention : pas de Group By ici.

Références

Documents relatifs

- Démarrer le moteur, écouter / sonder moteur tournant d’éventuels bruits anormaux - Mettre en pression le système pneumatique jusqu’au déclanchement du clapet de décharge

Ensuite, sous l’effet de l’acc´el´eration du camion, le bloc va glisser (sans basculer !) sur la benne. Le bloc a une acc´ el´ eration dans la direction du camion, mais de norme

2 roulements = Liaison pivot Efforts axiaux et

Sciences Industrielles de l’Ingénieur TD07-loi d'entrée sortie correction.. Lycée Champollion-Grenoble-CPGE MPSI

Déterminer quelles sont les hypothèses entre lesquelles on ne peut

Les trois robinets sont ouverts, combien de temps faudra-t-il pour viser la cuve?... La méthode de la

Le Collège des Commissaires Sportifs pourra qualifier un pilote n’ayant pas fait un seul tour si ce pilote présente l’expérience nécessaire et dans la mesure où il reste des

2) Coche la case de la syllabe où tu entends ce son. 3) Entoure les mots si tu entends