From 1622e22e5eb5438661c54258d648c6c26ca6f54c Mon Sep 17 00:00:00 2001
From: Justine Ouellette <justine.ouellette@polymtl.ca>
Date: Wed, 19 Apr 2023 16:53:01 -0400
Subject: [PATCH] maybe sql requests

---
 query.sql | 56 +++++++++++++++++++++++++++++++++++++++++++------------
 1 file changed, 44 insertions(+), 12 deletions(-)

diff --git a/query.sql b/query.sql
index 51019e0..dbef391 100644
--- a/query.sql
+++ b/query.sql
@@ -2,37 +2,69 @@
 
 
 -- 1. Retourne la marque, le modèle et l'emplacement d'origine des véhicule
-SELECT marque, modele, emplacementNom FROM Vehicule;
+SELECT marque, modele, emplacement_nom FROM Vehicule;
 
 -- 2. Retourne le marque, le modèle et l'emlacement d'origine des véhicules y compris les marques et les modèles qui n'ont pas de location
-SELECT marque, modele, emplacementNom FROM Vehicule;
+SELECT marque, modele, emplacement_nom FROM Vehicule;
 
 -- 3. Retournez les emplacements sans véhicules 
-
+SELECT emplacement.nom, count(vehicule.immatriculation)
+FROM emplacement e
+LEFT OUTER JOIN vehicule v ON e.nom = v.emplacement_nom
+GROUP BY emplacement.nom
+HAVING count(vehicule.immatriculation) = 0;
 
 -- 4. Retournez tous les véhicules dont le domicile est situé dans la ville de Montréal
-
+SELECT * FROM vehicule v
+LEFT JOIN emplacement e ON v.emplacement_nom = e.nom
+WHERE e.adresse_postale_ville = 'Montréal';
 
 -- 5. Retournez les emplacements et le nombre de voitures hybrides à chaque emplacement 
-
+SELECT emplacement.nom, count(vehicule.immatriculation)
+FROM emplacement e
+LEFT OUTER JOIN vehicule v ON e.nom = v.emplacement_nom
+GROUP BY emplacement.nom
+HAVING v.type = 'Hybride';
 
 -- 6. Retournez les plaques d’immatriculation des véhicules qui ont été utilisés (pas seulement réservés)
-
+SELECT vehicule.immatriculation
+FROM vehicule v
+JOIN utilisation u ON v.immatriculation = u.immatriculation;
 
 -- 7. Retournez toutes les informations des membres (personnes physiques) vivant dans une ville avec un emplacement qui a des voitures hybrides
-
+SELECT * FROM membre m
+LEFT JOIN emplacement e 
+LEFT OUTER JOIN vehicule v ON e.nom = v.emplacement_nom 
+WHERE v.type = 'Hybride'
+ON m.adresse_postale_ville = e.adresse_postale_ville
+WHERE m.est_membre_physique = TRUE;
 
 -- 8. Retournez toutes les informations des véhicules à l’emplacement Montréal qui sont libres le 23/01/2023 à 10 h
-
+SELECT * FROM vehicule v
+LEFT OUTER JOIN reservation r ON v.immatriculation = r.immatriculation
+AND ('2023-01-23 10:00:00' BETWEEN r.temps_debut AND r.temps_fin)
+WHERE v.emplacement_nom = 'Montréal'
+AND r.temps_debut IS NULL;
 
 -- 9. Retournez les plaques d’immatriculation et le nombre de réservations de chaque véhicule (y compris ceux sans réservation, c’est-à-dire que le nombre de réservations est 0)
-
+SELECT vehicule.immatriculation, count(reservation.temps_debut)
+FROM vehicule v
+LEFT OUTER JOIN resrevation r ON v.immatriculation = r.immatriculation
+GROUP BY vehicule.immatriculation;
 
 -- 10. Quel est le véhicule avec la consommation de carburant la plus élevée ?
-
+SELECT * FROM vehicule
+WHERE consommation = (SELECT MAX(consommation) FROM vehicule);
 
 -- 11. Retournez la consommation de carburant maximale, moyenne et minimale par catégorie de véhicule
-
+SELECT vehicule.type, MAX(vehicule.consommation), AVG(vehicule.consommation), MIN(vehicule.consommation)
+FROM vehicule
+GROUP BY vehicule.type;
 
 -- 12. Retournez tous les membres qui ont réservé un véhicule à un endroit autre que leur emplacement d’origine même si le type de véhicule existe à leur emplacement d’origine 
-
+SELECT * FROM membre m
+RIGHT OUTER JOIN reservation r ON r.numero_membre = m.numero_membre
+LEFT OUTER JOIN vehicule v ON r.immatriculation = v.immatriculation 
+WHERE v.emplacement_nom != m.emplacement_favoris_nom AND vehicule.immatriculation = v.immatriculation FROM vehicle
+LEFT OUTER JOIN emplacement e ON m.emplacement_favoris_nom = e.nom
+WHERE v.type = vehicle.type;
-- 
GitLab