|
Publicité ' | |||||||||||||||||||||||
|
|
#1 | ||
|
Invité régulier
![]() Inscription : janvier 2007 Messages : 19 ![]() |
Bonjour à tous,
Je reviens vers vous avec ma bdd de chevaux de course. J'ai écrit une requête qui me semblait pourtant simple mais qui ne marche pas. Une requête "Partants" avec deux champs [N° PMU] et [Nom] listant les partants d'une course. Une deuxième table "Performances" listant les performances passées de tous ces chevaux et dont je veux extraire certaines données sur l'année passé, par exemple les dates des performances. J'ai donc écrit: Code :
Qu'ai-je donc oublié? Merci d'avance pour votre aide. |
||
|
|
00
|
|
|
#2 |
![]() ![]() René MAROTInscription : octobre 2005 Messages : 5 474 ![]() |
Je pense que c'est ton Having qui l'élimine, essaye en enlevant la condition de sélection et si cela marche, c-à-d que tu obtiens la personne, ajoute une sélection à la sélection or Performances.Date is null
A+
__________________
Vous voulez une réponse rapide et efficace à vos questions téchniques ? Ne les posez pas en message privé mais dans le forum, vous bénéficiez ainsi de la compétence et de la disponibilité de tous les contributeurs. |
|
|
00
|
|
|
#3 | ||||||
|
Membre actif
![]() Inscription : décembre 2009 Messages : 204 ![]() |
Bonjour,
Si je comprend bien, tu souhaites afficher les chevaux et leurs performances datant d'il y a moins d'un an mais aussi les chevaux n'ayant pas de performances? Je te conseillerais de faire 3 requêtes : Q_Performances_Chevaux Toutes les performances des chevaux Code :
Q_Chevaux_sans_performance Code :
Pour afficher ce que tu souhaites : Code :
|
||||||
|
|
00
|
|
|
#4 | |
|
Invité régulier
![]() Inscription : janvier 2007 Messages : 19 ![]() |
Citation:
Pour marot-r: Oui, si j'enlève ma condition de date, le concurrent apparait car il a des perfs antérieures à une année en arrière. Si j'ajoute Or Performances.Date Is Null, ça ne marche pas mieux. Pour tarnx, je regarde et reviens vers vous. |
|
|
|
00
|
|
|
#5 |
|
Invité régulier
![]() Inscription : janvier 2007 Messages : 19 ![]() |
Pour tarnx:
Vous avez bien compris ce que je voulais. Les deux requêtes sélections fonctionnent bien notamment celle qui sélectionne le cheval sans performance, mais la requête union ne marche pas, ce concurrent reste absent de la liste
|
|
|
00
|
|
|
#6 |
|
Invité régulier
![]() Inscription : janvier 2007 Messages : 19 ![]() |
En effet, c'est la condition sur la date qui pose problème car j'ai ajouté un cheval "Tartenpion" dans ma table "Partants" (et qui n'existe pas dans la table "Performances"), j'ai supprimé la condition sur la date, et là grâce au LEFT JOIN la requête affiche bien Tartenpion avec les autres et un champ date null.
J'ai alors créé une seconde requête toute simple à partir de ma table "Partants" et de la première requête (au résultat incomplet), avec un LEFT JOIN et là ça marche mais si quelqu'un a une idée afin d'éviter de dédoubler la requête je suis preneur. |
|
|
00
|
|
|
#7 | ||||||
|
Expert Confirmé Sénior
![]() ![]() Fabien Enseignant Inscription : janvier 2009 Messages : 2 415 ![]() |
bonjour,
effectivement c’est peut-être le même problème qu’ici … et comme toi je procèderais bien en deux temps, par contre je ne vois pas bien l’utilité de tous ces DISTINCT et GROUP BY… 1 ère requête R1 : Code sql :
Puis la requête finale : Code sql :
Tu peux les imbriquer si tu préfères : Code sql :
__________________
L'informatique fait son grand retour au lycée... |
||||||
|
00
|
|
|
#8 |
|
Invité régulier
![]() Inscription : janvier 2007 Messages : 19 ![]() |
Merci beaucoup f-leb, la requête imbriquée finale fonctionne parfaitement.
En effet j'ai tendance à mettre des DISTINCT et des GROUP BY un peu trop systématiquement même quand il n'y a pas besoin. J'ai corrigé tout çà dans mon projet. |
|
|
00
|
Copyright © 2000-2012 - www.developpez.com