floriannn
Forumeur occasionnel

Messages: 22
|
Posté le:
Mer 29 Déc 2010 - 01:34 |
  |
Bonjour,
Je suis en train de faire les différentes études de cas en développement. J'en suis actuellement à "Anna-bio" de Nouméa qui date de 2003 (sujet / corrigé).
J'ai deux ch'tites questions concernant la partie SQL (Dossier 2).
Le MLD est le suivant :
Citation: |
CLIENT (codeClient, nomClient, prénomClient, rueClient, codePostalClient, villeClient, télClient)
TYPEANALYSE(réfTypeAnalyse, désignationTypeAnalyse, prixTypeAnalyse )
ECHANTILLON(codeEchantillon, dateEntrée, #codeClient)
REALISER(#codeEchantillon, #réfTypeAnalyse, dateRéalisation)
"Les valeurs des champs codeEchantillon et réfTypeAnalyse de la relation REALISER sont saisies à la réception de l’échantillon mais le champ dateRéalisation n’est pas immédiatement renseigné : il le sera lorsque l’analyse aura été réalisée." |
A la question "2.4 Donner les codes et dates d’entrée des échantillons pour lesquels plus de 5 analyses ont été réalisées.", la solution proposée est la suivante :
Citation: |
SELECT codeEchantillon, dateEntrée
FROM ECHANTILLON
WHERE codeEchantillon IN (SELECT codeEchantillon
FROM REALISER
WHERE dateRéalisation IS NOT NULL
GROUP BY codeEchantillon
HAVING count(*) >5) |
Hum... On aurait pas pu faire ça, directement ?
Citation: |
SELECT E.codeEchantillon, dateEntrée
FROM REALISER R
INNER JOIN ECHANTILLON E ON E.codeEchantillon=R.codeEchantillon
WHERE dateRéalisation IS NOT NULL
GROUP BY E.codeEchantillon, dateEntrée
HAVING count(*) >5 |
Ensuite, à la question "2.3 Donner les codes et dates d’entrée des échantillons pour lesquels aucune analyse n’a été réalisée", la solution proposée est la suivante :
Citation: |
SELECT codeEchantillon, dateEntrée
FROM ECHANTILLON
WHERE codeEchantillon NOT IN (SELECT codeEchantillon
FROM REALISER ) |
Au vu de la phrase que j'ai mis en italique et de la réponse à la question précédente, j'aurais eu tendance à ajouter une condition "WHERE dateRéalisation IS NOT NULL" dans la sous-requête, pas vous ? (avec un petit Distinct pour l'optimisation)
Merci d'avance pour vos avis et bonnes fêtes de fin d'année  |
|
|