La Communauté Webmaster  forum rss


  Forum-webmaster
  Technique - programmation
  PHP / MySQL
(Modérateurs: Shain, Jey, erwinol, Lilian, lauryv, ToToMaStEr)
  Requete MySQL compliquée
« Précédent Suivant »
Pages: [1] Descendre
Répondre    Aviser des réponses    Envoyer le sujet    Imprimer
  Auteur  Sujet: Requete MySQL compliquée  (Lu 753 fois)
Requete MySQL compliquée
« sur: le 25-01-2007 a 19:59:18 »
tavman
Habitué
***

Hors-Ligne

Messages: 466



HS

Voir le Profil
Répondre avec citation

Salut tout le monde.

Voila, j'aimerai faire une requete MySQL qui semble assez simple mais qui en fait est plutot compliquée (enfin peut etre pas)

Tout d'abord, voici mes 3 tables :
Code:

USER
+---------+-------------+
| id_USER | pseudo_USER |
+---------+-------------+

QUESTION
+-------------+---------+------------------+
| id_QUESTION | id_USER | CONTENU_QUESTION |
+-------------+---------+------------------+

REPONSE
+------------+-------------+---------+-----------------+
| id_REPONSE | id_QUESTION | id_USER | CONTENU_REPONSE |
+------------+-------------+---------+-----------------+

Bon j'ai un peu simplifier tout ca... mais en gros, c'est ca.

Ce que j'aimerai bien faire, c'est quelque chose qui ressemble a ceci :
SELECT
  COUNT(DISTINCT z.id_REPONSE ) AS nb_REPONSES,
  x.pseudo_USER,
  y.id_QUESTION,
  y.CONTENU_QUESTION
FROM
  USER      x INNER JOIN
  QUESTION  y ON x.id_USER = y.id_USER,
  REPONSE      z
GROUP BY
  y.id_QUESTION=z.id_QUESTION

En gros, je voudrai en une seule requete avoir :
- le pseudo du type qui a poster la question
- la question
- l'ID de la question (pour faire des liens)
- le nombre de réponses a la question

Mon problème est sur le nombre de réponses. J'ai cherché un peu dans tous les sens de plusieur façon, sans succès... Quelqu'un a une idée ?

« Dernière Édition: le 25-01-2007 a 21:34:34 par tavman » Rapporter au modérateur  

I-Radian

Re:Requete MySQL compliquée
« Répondre #1 sur: le 25-01-2007 a 20:45:07 »
MarvinLeRouge
Superactif
****

Hors-Ligne

Messages: 584





Voir le Profil    WWW
Répondre avec citation

Salut,

Je reformule ta requète afin d'être sûr d'avoir bien compris :
Tu veux la liste des questions posées, avec pour chaque question,
- le pseudo de l'utilisateur ayant posé la question
- le libellé de la question
- l'id de la question
- le nombre de réponses à la question

C'est bien ça ?

Rapporter au modérateur  

Développeur web / Création de site internet
jean@ceugniet.com
Jean Ceugniet, Développement web
SIRET : 523 611 044 00018
Re:Requete MySQL compliquée
« Répondre #2 sur: le 25-01-2007 a 20:54:35 »
tavman
Habitué
***

Hors-Ligne

Messages: 466



HS

Voir le Profil
Répondre avec citation

Ouep c'est exactement ca Marvin...
Le seul point ou ca bloc, c'est le COUNT / GROUP BY et j'y arrive pas du tout... Et effectivement, je vient de voir que le GROUP BY que j'avais mis est complètement nase :

y.id_QUESTION=z.id_QUESTION

ca veut pas dire grand chose.. mais j'avais tellement tout retourner e truc dans tous les sens que..


Donc oui Marvin, pour chaque question, je veux
- le pseudo de l'auteur de la question (ca c'est OK)
- le libellé de la question (OK)
- l'id de la question (OK)
- le nombre de réponses a la uestion (ca bloc)

Je veux pas les réponses elles mêmes, mais juste le nombre de réponses...

« Dernière Édition: le 25-01-2007 a 21:23:10 par tavman » Rapporter au modérateur  

I-Radian
Re:Requete MySQL compliquée
« Répondre #3 sur: le 25-01-2007 a 22:12:51 »
tavman
Habitué
***

Hors-Ligne

Messages: 466



HS

Voir le Profil
Répondre avec citation

BINGOOOOOOOOOOOOOOO

La solutionb (si  a interresse quelqu'un d'avoir la réponse) :

SELECT
   SUM ( y.id_QUESTION=z.id_QUESTION AND z.id_REPONSE ) AS nb_REPONSES,
   x.pseudo_USER,
   y.id_QUESTION,
   y.CONTENU_QUESTION
FROM
   USER      x JOIN
   QUESTION   y ON x.id_USER = y.id_USER,
   REPONSE      z
GROUP BY
   y.id_QUESTION

Bon OK : j'y comprend pas grand chose mais.... ca fonctionne bien

Rapporter au modérateur  

I-Radian
Re:Requete MySQL compliquée
« Répondre #4 sur: le 25-01-2007 a 23:31:38 »
MarvinLeRouge
Superactif
****

Hors-Ligne

Messages: 584





Voir le Profil    WWW
Répondre avec citation

Bein moi j'avais trouvé ça :
Code:
select qu.idQuestion, qu.libelle, us.pseudo, count(re.idReponse)
from questions qu inner join users us on qu.idUser = us.idUser
left outer join reponses re on re.idQuestion = qu.idQuestion
group by re.idQuestion


Bon, je te laisse remettre les bons noms de tables / champs.

Rapporter au modérateur  

Développeur web / Création de site internet
jean@ceugniet.com
Jean Ceugniet, Développement web
SIRET : 523 611 044 00018
Re:Requete MySQL compliquée
« Répondre #5 sur: le 25-01-2007 a 23:36:05 »
tavman
Habitué
***

Hors-Ligne

Messages: 466



HS

Voir le Profil
Répondre avec citation

Heuu j'ai pas testé ton truc Marvin mais j'avais trouvé un truc qui marchai SAUF quand il n'y avait pas de réponses... (en gros, si yavait pas de réponses, ca me mettait même pas la question).

Bon je regarderai ta soluce après... et je ferai un petit test pour savoir lequel est le mieux...

Rapporter au modérateur  

I-Radian
Re:Requete MySQL compliquée
« Répondre #6 sur: le 26-01-2007 a 12:45:15 »
MarvinLeRouge
Superactif
****

Hors-Ligne

Messages: 584





Voir le Profil    WWW
Répondre avec citation

Sauf erreur de ma part, la mienne marche aussi s'il n'y a pas de réponses

Rapporter au modérateur  

Développeur web / Création de site internet
jean@ceugniet.com
Jean Ceugniet, Développement web
SIRET : 523 611 044 00018
Re:Requete MySQL compliquée
« Répondre #7 sur: le 26-01-2007 a 12:47:14 »
tavman
Habitué
***

Hors-Ligne

Messages: 466



HS

Voir le Profil
Répondre avec citation

Ahh c'est le left outer join... 'tain mais je connait trop pas ces machins là.... faudrai que je prenne des cours de MySQL poussé...

Rapporter au modérateur  

I-Radian
Re:Requete MySQL compliquée
« Répondre #8 sur: le 26-01-2007 a 15:57:32 »
MarvinLeRouge
Superactif
****

Hors-Ligne

Messages: 584





Voir le Profil    WWW
Répondre avec citation

Petit cours rapide :
inner join : je prends dans la table A et la table B, pourvu que l'élément de jointure existe dans les 2
left (outer) join : je prends dans la table A TOUJOURS, et dans la table B si l'élément y existe (et je prends null à la place sinon)
right (outer) join : la même chose, mais en prenant B come référence au lieu de A

Rapporter au modérateur  

Développeur web / Création de site internet
jean@ceugniet.com
Jean Ceugniet, Développement web
SIRET : 523 611 044 00018
Re:Requete MySQL compliquée
« Répondre #9 sur: le 26-01-2007 a 16:04:26 »
tavman
Habitué
***

Hors-Ligne

Messages: 466



HS

Voir le Profil
Répondre avec citation

ah ouep OK effectivement, c'est ce qu'il me fallait... jme doutait bien que puisque y avait inner, devait y avoir outer, mais comme je savait pas a quoi servait inner et que le outer tout seul fonctionnait pas...

Rapporter au modérateur  

I-Radian
Répondre    Aviser des réponses    Envoyer le sujet    Imprimer
Pages: [1] Monter
« Précédent Suivant »
Sauter à: 

Votre statut : Invité
Vous devez être membre pour participer.
 
 
Let’s Encrypt : le certificat SSL gratuit
Tester votre site internet sur différents navigateurs
[WordPress] Des problèmes avec l’administration ?
Rappel : Mettez à jour vos CMS et vos sites E-commerce
Le .fr fête ses 25 années d’existence !
Mesurer votre audience en temps réel avec BubbleStat
Porter réclamation contre Google Panda ?
Zlio n’est plus …
 
 
 
 
 

Copyright (c) Devclic 2002 - 2026 - Tous droits réservés

creation site internet strasbourg