J'ai un petit problème que j'ai résolu. Supposant que la partie conception est correcte ... j'aimerai avoir votre avis sur 7 requêtes SQL dont certaines sont réalisées avec deux solutions différentes, enfin vous pouvez me dire svp par exemple si :
- "ça va !! "
ou
- " Ça ne va pas du tout !! "
ou
- "On n'est pas sure ... "
Et si vous aimeriez bien un amélioration serait toujours la bienvenue.
Voila en quoi consiste :
Produire le diagramme relationnel d’une ville de Shadocks. Tous les Shadocks vivent dans des nids.
Tous les nids sont posés sur une branche nommée (comportant elle même des branches) d'un même arbre. Les Shadocks étant loufoques, les nids peuvent avoir une infinité de caractéristiques qui peuvent avoir une infinité de valeurs.
Par exemple:
-*‐ forme: ronde, carrée, hexagonale …
-*‐ couleur: rouge, vert, …
-*‐ attributs: une ou plusieurs fenêtres, portes, toits,ailes...
-*‐ etc… Dans chaque nid peuvent vivre plusieurs Shadocks.
Il existe une règle qui stipule que pour qu'un Shadock puisse sortir vivre dans un autre nid, il faut que tous les Shadocks qui ont emménagé après lui dans le nid actuel, soient partis vivre dans un autre nid. C'est la politesse Shadockienne.
Le diagramme MLD (après être passer par MCD sous WinDesign, je ne prends pas en compte l'association réflexive entre l'entité branche et elle même) est:
Voici les requêtes avec les solutions que je propose:
--Liste de tous les nids posés sur l’arbre.
-*‐ Liste des nids qui ont plus de 5 Shadocks.
Code : Sélectionner tout - Visualiser dans une fenêtre à part SELECT IDNID FROM NID;
SOLUTION 1
SOLUTION 2
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 SELECT IDNID FROM NID WHERE (SELECT COUNT(IDSHADOCK) FROM SHADOCK GROUP BY IDNID ) >5;
-*‐ Liste de tous les Shadocks qui peuvent emménager dans un autre nid.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4 SELECT IDNID FROM NID NATURAL JOIN (SELECT IDSHADOCK FROM SHADOCK GROUP BY IDSHADOK HAVING COUNT(*) >=6)
SOLUTION 1
SOLUTION 2
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5 SELECT IDSHADOCK FROM VIVRE WHERE (SELECT DATEAMENAGMENT FROM VIVRE) IN (SELECT MAX(DATEAMENAGMENT) FROM VIVRE GROUP BY IDNID);
-*‐ Liste des nids qui sont en forme de casserole mais pas rouge.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6 SELECT IDSHADOCK FROM SHADOCK NATURAL JOIN (SELECT IDSHADOCK FROM VIVRE ORDER BY DATEAMENAGEMENT DESC LIMIT 1 );
-*‐ Liste des branches qui supportent d’autres branches et la liste des branches qui ne supportent pas de branche.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4 SELECT IDNID FROM NID WHERE FORMENID LIKE CASSEROLE AND COULEURNID != ROUGE;
-*‐ Liste des nid que supporte la branche “GaBuZoMe”.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 SELECT IDBRANCHE FROM BRANCHE B1 OUTER JOIN BRANCHE B2 ON B1.IDBRANCHE=B2.IDBRANCHE;
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 SELECT IDNID FROM NID JOIN BRANCHE ON NID.IDBRANCHE=BRANCHE.IDBRANCHE WHERE NOMBRANCHE LIKE GaBuZoMe;
-*‐La liste des nids qui ont toutes les caractéristiques possibles
ou bien :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5 SELECT IDNID FROM NID WHERE FORMENID IS NOT NULL AND COULEURNID IS NOT NULL AND COMPLEMENTNID IS NOT NULL;
Je tiens à vous remercier pour votre lecture, en attendant votre avis, je vous souhaite tous un agréable weekend .
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 SELECT IDNID FROM NID WHERE (FORMENID ,COULEURNID,COMPLEMENTNID) IS NOT NULL;
Partager