Bonjour,
Je dois résoudre ce probleme:
"Vérifier que les étapes de chaque projet ont été faites entre les dates de début et de fin du projet. (Écrivez une requête qui permette à un humain de savoir si c’est le cas. On ne vous demande pas d’ajouter cette contrainte à la base de données.)"
Voici ma requête:
Voici les 2 tableau nécessaires pour résoudre le problème:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4 SELECT e.idEtape, e.idProjet, e.dateDebut, e.dateFin FROM (SELECT idProjet, dateDebut, dateFin FROM Projet) AS p RIGHT JOIN EtapexProjet AS e ON e.dateDebut > p.dateDebut AND e.dateFin > p.dateFin ORDER BY p.idProjet;
mysql> SELECT * FROM EtapexProjet;
+---------+----------+------------+------------+
| idEtape | idProjet | dateDebut | dateFin |
+---------+----------+------------+------------+
| 1 | 1 | 2011-07-01 | 2011-09-01 |
| 1 | 2 | 2012-05-01 | 2012-05-10 |
| 1 | 3 | 2011-11-01 | 2012-01-20 |
| 2 | 1 | 2011-09-02 | 2011-11-30 |
| 2 | 2 | 2012-05-11 | 2012-06-01 |
| 2 | 3 | 2012-01-21 | 2012-04-01 |
| 3 | 1 | 2011-12-01 | 2012-07-07 |
| 3 | 2 | 2012-06-02 | 2012-07-01 |
| 3 | 3 | 2012-04-02 | NULL |
| 4 | 1 | 2012-07-08 | NULL |
| 4 | 2 | 2012-07-01 | 2012-07-21 |
| 5 | 2 | 2012-07-22 | 2012-07-23 |
+---------+----------+------------+------------+
12 rows in set (0.00 sec)
mysql> SELECT * FROM Projet;
+----------+----------+------------------------------------------------------+------------+------------+---------------+
| idProjet | idClient | nomProjet | dateDebut | dateFin | idResponsable |
+----------+----------+------------------------------------------------------+------------+------------+---------------+
| 1 | 321 | Développement du site web | 2011-08-01 | NULL | 1876 |
| 2 | 321 | Maintenance du systeme de ressources humaines | 2012-05-01 | 2012-07-23 | 2231 |
| 3 | 345 | Développement du systeme de gestion de fournisseurs| 2011-11-01 | NULL | 2231 |
+----------+----------+------------------------------------------------------+------------+------------+---------------+
Partager