Gérer le forum:  Aide  •  Rechercher  •  Liste des Membres  •  Groupes d'utilisateurs   •  S'enregistrer  •  Profil  •  Se connecter pour vérifier ses messages privés  •  Connexion 
 [SQL] Etude de cas nouméa 2003 : questions sur la partie SQL Voir le sujet suivant
Voir le sujet précédent
Poster un nouveau sujetRépondre au sujet
Auteur Message
floriannn
Forumeur occasionnel
Forumeur occasionnel




Messages: 22

MessagePosté le: Mer 29 Déc 2010 - 01:34 Répondre en citantRevenir en haut

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 Smile
Voir le profil de l'utilisateurEnvoyer un message privé

N'oubliez pas de vous inscrire à la communauté pour participer. Si vous êtes déjà membre, connectez-vous pour faire disparaître ce bandeau publicitaire.
floriannn
Forumeur occasionnel
Forumeur occasionnel




Messages: 22

MessagePosté le: Lun 24 Jan 2011 - 21:50 Répondre en citantRevenir en haut

Personne ?
Voir le profil de l'utilisateurEnvoyer un message privé
Kyle
Accro à Web-IG
Accro à Web-IG




Messages: 157

MessagePosté le: Mar 25 Jan 2011 - 22:26 Répondre en citantRevenir en haut

Jsuis pas développeur mais jte répondrais de taper les 2 requêtes directement et de voir si le résultat résultant des 2 requêtes est le même et répond à la question.
Voir le profil de l'utilisateurEnvoyer un message privé
Montrer les messages depuis:      
Poster un nouveau sujetRépondre au sujet
 Sauter vers:   



Voir le sujet suivant
Voir le sujet précédent
Vous ne pouvez pas poster de nouveaux sujets dans ce forum
Vous ne pouvez pas répondre aux sujets dans ce forum
Vous ne pouvez pas éditer vos messages dans ce forum
Vous ne pouvez pas supprimer vos messages dans ce forum
Vous ne pouvez pas voter dans les sondages de ce forum