Portail PHP

Forum de discussion et d'aide au php

Vous n'êtes pas identifié.

Annonce

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.
 

#1 17-05-2005 10:36:38

Guest
Membre
Date d'inscription: 26-06-2004
Messages: 15
Site web

pb requête

bonjour à tous.
voici mon pb
jé 3 tables (ca parle d'ETALONS(des chiens!) d'une certaine RACE qui appartiennent à des PROPRIETAIRES)

Code:

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

Code:

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

 

#2 17-05-2005 10:45:31

kazhar
Ex-Webmaster
Lieu: Orléans
Date d'inscription: 25-06-2004
Messages: 3381
Site web

Re: pb requête

tu fait un GROUP BY r_race...
donc, il ne te ressortira qu'un seul propriétaire par race, ca semble logique...
fais plutot ton GROUP BY sur p.id_prop wink

Hors ligne

 

#3 18-05-2005 09:41:27

hollywood
Membre
Date d'inscription: 18-05-2005
Messages: 18

Re: pb requête

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 :

Code:

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

 

#4 18-05-2005 09:44:31

hollywood
Membre
Date d'inscription: 18-05-2005
Messages: 18

Re: pb requête

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

 

#5 18-05-2005 10:13:13

hollywood
Membre
Date d'inscription: 18-05-2005
Messages: 18

Re: pb requête

voici la nouvelle requête...

Code:

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

 

#6 18-05-2005 10:37:09

kazhar
Ex-Webmaster
Lieu: Orléans
Date d'inscription: 25-06-2004
Messages: 3381
Site web

Re: pb requête

bah, pourquoi as-tu supprimé le HAVING ?? c'est ca qui ne prends que les enregistrements ou race apparait plus de 6 fois...

Hors ligne

 

#7 18-05-2005 10:43:34

hollywood
Membre
Date d'inscription: 18-05-2005
Messages: 18

Re: pb requête

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

 

#8 18-05-2005 10:50:58

kazhar
Ex-Webmaster
Lieu: Orléans
Date d'inscription: 25-06-2004
Messages: 3381
Site web

Re: pb requête

non. essaye en faisant un

Code:

HAVING count(e.race) >= 6

(ou le champ que tu veux vérifier)

Hors ligne

 

#9 19-05-2005 03:29:40

hollywood
Membre
Date d'inscription: 18-05-2005
Messages: 18

Re: pb requête

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

 

#10 19-05-2005 04:40:24

hollywood
Membre
Date d'inscription: 18-05-2005
Messages: 18

Re: pb requête

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!!  big_smile

en tout cas merci de votre aide!

Hors ligne