|
Publicité ' | |||||||||||||||||||||||
|
|
#1 | ||
|
Invité de passage
![]() Carole Inscription : décembre 2010 Messages : 10 ![]() |
Bonjour,
Je débute sous MySql. Pour les besoins de mon stage, j'ai construit une base Mysql qui gère des stagiaires envoyés par des entreprises dans un centre de formation. Parmi la liste de mes requêtes, je dois en concevoir une qui permet d'afficher, selon une période donnée (exemple entre le 01/01/2010 et le 31/12/2010), la liste des stagiaires envoyés par une même entreprise ainsi que d'afficher certains détails de leurs formations.Pour le moment, ne sachant pas faire la requête de façon "générique", je l'ai conçue avec une entreprise "en dur" et une période fixe aussi. Elle fonctionne (ne renvoie pas d'erreur) mais ne me renvoie qu'un seul stagiaire, alors que j'ai fait en sorte d'en avoir au moins 2 dans ma base de test.je ne comprends pas où est l'erreur dans ma requête, pouvez-vous m'aider SVP? Je joint le mld pour une meilleure clarté. Voici le code de ma requete : Code :
Cordialement, Carole |
||
|
|
00
|
|
|
#2 | ||
![]() ![]() |
Ta requête ne devrait même rien renvoyer du tout par rapport à ton modèle de données, si ce n'est une erreur !
Code :
Si idInterv et autreInterv sont des clés étrangères référençant intervenant, il manque deux associations dans le MLD mais à mon avis ces colonnes ne devraient aps exister. Ou alors ton MLD n'est pas à jour ? Es-tu sûr que tes deux stagiaires répondent aux conditions fixées dans le WHERE de ta requête ? Si oui, simplifie ta requête en supprimant tout ce qui ne vient pas directement des tables Formation, Stagiaire, Entreprise et jonctionstageentform et regarde si tu obtiens bien les deux stagiaires souhaités. Bon courage !
__________________
Philippe Leménager. Ingénieur d'étude à l'École Nationale de Formation Agronomique. Mon blog sur la conception des BDD, le langage SQL, le PHP avec Zend Framework... « Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément ». (Nicolas Boileau) À la maison comme au bureau, j'utilise Mandriva Linux ou Mageïa ! Soutenons l'industrie logicielle française ! Linuxiens, comptez-vous ! |
||
|
00
|
|
|
#3 |
|
Invité de passage
![]() Carole Inscription : décembre 2010 Messages : 10 ![]() |
Bonjour Philippe et merci
En fait, je suis allée un peu vite en besogne concernant le mld joint : je l'ai fait depuis analyseSI et ce dernier refuse la meme appellation pour les cles etrangeres. Mais elles sont bien réferencées dans ma bdd (dans ma table formation, j'ai donc 2 cles etrangeres (idIntervenant et autreIntervenant) pointant sur la meme cle primaire (idIntervenant) de la table Intervenant. En revanche, il est vrai que je n'ai ajouté la 2eme cle qu'apres avoir fait le mld et donc je n'ai pas fait de table associative...Je pense rectifier ma base demain afin qu'elle soit "en regle" C'est pourquoi je n'ai pas de renvoi d'erreur je pense. Concernant les conditions de ma requêtes, oui mes 2 stagiaires travaillent dans la même entreprise et sont tous les 2 venus au cours de l'année 2010, l'un pour un type de formation "stage", l'autre pour un type "Bulats". Je vais donc suivre tes conseils et tester sans demander l'affichage du type et du contenu des formations correspondantes. Je te tiens au courant dès demain. Merci encore |
|
|
00
|
|
|
#4 | ||
|
Invité de passage
![]() Carole Inscription : décembre 2010 Messages : 10 ![]() |
Bonjour, après avoir procédé par élimination j'ai trouvé l'origine de l'erreur : comme il y avait des dissemblances entre les 2 formations sur une colonne (autreIntervenant), le "INNER JOIN" ne convenait pas. je l'ai remplacé par une jointure externe et ça fonctionne !!!
Voici le code à présent : Code :
|
||
|
|
00
|
|
|
#5 |
|
Expert Confirmé
![]() ![]() Avcxjo MoKoRetraité Inscription : novembre 2005 Messages : 2 530 ![]() |
Saluton,
Juste pour vérifier Code sql :
F.dateDebut AND F.dateFin BETWEEN '2010-01-01' AND '2010-12-31' C'est bien ce que tu souhaites ?
__________________
Kie lumo eksistas ankaŭ ombro troviĝas. L.L. Zamenhof articles : Comment émuler un tableau croisé [quasi] dynamique et : Une énigme mathématique résolue avec MySQL recommande l'utilisation de PDO (PHP5 Data Objects) |
|
00
|
|
|
#6 |
|
Invité de passage
![]() Carole Inscription : décembre 2010 Messages : 10 ![]() |
Bonsoir,
En fait, pour cette requête, les 2 dates doivent être comprises dans l'année civile. Je dois également créer une requête qui pointera sur un intervalle de temps d'un an, mais il m'a semblé plus facile dans un premier temps d'essayer avec une année "pleine" |
|
|
00
|
|
|
#7 |
|
Expert Confirmé
![]() ![]() Avcxjo MoKoRetraité Inscription : novembre 2005 Messages : 2 530 ![]() |
Quel rapport avec ma remarque ?????
__________________
Kie lumo eksistas ankaŭ ombro troviĝas. L.L. Zamenhof articles : Comment émuler un tableau croisé [quasi] dynamique et : Une énigme mathématique résolue avec MySQL recommande l'utilisation de PDO (PHP5 Data Objects) |
|
00
|
Copyright © 2000-2012 - www.developpez.com