Forum de discussion et d'aide au php
Vous n'êtes pas identifié.
|
Regles d'utilisation des forums : pensez à toujours les respecter si vous désirez obtenir des réponses rapides. FAQ : pensez à toujours chercher dedans si la réponse à votre question est dedans. Proposez vos news : si vous avez un evenement à annoncer le chat : venez discuter de php. |
||
bonjour à tous.
voici mon pb
jé 3 tables (ca parle d'ETALONS(des chiens!) d'une certaine RACE qui appartiennent à des PROPRIETAIRES)
a_etalon(id, #id_prop, #id_race) a_Race(id_race) a_proprietaire(id_prop, email)
j'aimerais récupérer la liste des mails de propriétaire qui possèdent un étalon dont la race est au moins 6 fois présente dans la table a_etalon.
voici la requête que j'ai faite
SELECT p.email FROM a_Race r, a_etalon e, a_proprietaire p WHERE p.id.prop = e.id_prop AND e.id_race = r.id_race GROUP BY r.Race HAVING COUNT(e.id) > 6
le pb, c'est que je ne reçois qu'un seul propriétaire par race! alors que plusieurs propriétaires peuvent posséder une même race de chiens.
J'espère avoir été clair! Donc pouvez-vous me dire où est l'erreur ds la requête?
Merci à tous!
Hors ligne
bonjour,
je reviens sur mon pb d'hier car il n'est tjs pas résolu!!
oublions l'histoire des mails!
j'aimerais la liste des étalons(id, nom et race) avec leur propriétaires respectifs, mais seulement ceux dont la race apparaît au moins 6 fois ds la table a_etalon
voici la première requête que j'ai écrite :
SELECT e.id, e.nom, p.nom, r.Race, COUNT(id) FROM a_etalon e, a_Race r, a_proprietaire p WHERE e.valid = 'oui' AND e.race = r.id_race AND e.id_prop = p.id_prop GROUP BY race HAVING COUNT(*) >= 6
ds cette requête on revient à l'erreur que j'ai commise et que l'un des forumistes a sympathiquement résolu! effectivement je fais un GROUP BY race dont je n'aurai qu'un chien par race, normal.
donc mon idée c'est faire GROUP BY id, pour avoir la liste totale
mais ds ce cas je n'ai plus aucun résultat!!
help me please!
merci beaucoup!
Hors ligne
petite précision!
ne tenez pas compte de la ligne "valid='oui'", c'est un test supplémentaire. en fait chaque étalon inscrit n'est visible sur le site que si il est validé, et ds la liste que je souhaite, je veux seulement ceux qui sont validés!
voilà, merci!!
Hors ligne
voici la nouvelle requête...
SELECT e.id, e.nom, r.Race, p.nom FROM a_etalon e, a_Race r, a_proprietaire p WHERE e.valid = 'oui' AND e.race = r.id_race AND e.id_prop = p.id_prop GROUP BY id
le résultat : il m'affiche tous les étalons validés et leurs propriétaires respectifs.
La SEULE chose qui me manque est de "filtrer" en quelque sorte ces résultats, en ne gardant que ceux où "Race" apparaît au moins 6 fois
Il faut peut-être utiliser une clause "JOIN"...
J'aurais aimé faire une sous-requête mais apparemment phpMyAdmin ne les accepte pas...
merci
Hors ligne
exact
mais je vient de la mettre (HAVING COUNT(*) >= 6), mais je n'ai aucun résultat...
il doit me manquer une jointure ou qqch comme ca...
Hors ligne
le problème avec cette clause c'est que justement ca va poser le même pb que précédemment non? je n'aurai qu'un étalon par race (je ne sais pas lequel mysql choisit d'ailleurs...) alors que j'aimerais tous les étalons des races apparaissant au moins 6 fois ds la table a_etalon...
Hors ligne
J'ai réussi à résoudre le problème...avec une requête de fou, un gros bidouillage, mais j'ai de bons résultats apparemment!!
j'espère juste que mes profs de bdd ne vont pas voir cette requête ds mon rapport, ils vont me traiter sinon!!
en tout cas merci de votre aide!
Hors ligne