|
Publicité ' | ||||||||||||||||||||||||
|
|
#1 | ||||
|
Membre du Club
![]() Inscription : janvier 2010 Messages : 317 ![]() |
Bonjour. Je dois construire une seule requête mysql de ce qui suit si possible:
Il faut que je détermine le nombre de commentaire de idimg situé dans ori_comen et inscrire ce nombre dans la table ori_images à l'image à quoi il appartient. mon image 57 a 5 commentaires mon image 58 a 10 commentaires Ceci est ma tentative : Code :
Code :
|
||||
|
|
00
|
|
|
#2 |
|
Expert Confirmé
![]() Inscription : mars 2005 Messages : 2 823 ![]() |
1. Il faudrait dans ta table images un champ contenant le nombre de commentaires
2. Normalement tu ne devrais pas faire cela puisque tu peux obtenir facilement cette valeur avec une jointure Ex. : images ------------ image_id image_titre image_commentaires # nbre de commentaires ... commentaires ------------ commentaire_id commentaire_message commentaire_image # clef étrangère sur images.image_id ... Avec le champ image_commentaires : UPDATE images SET image_commentaires = ( SELECT COUNT(*) FROM commentaires WHERE commentaire_image = image_id ) Récupérer images et nbres de commentaires sans champ supplémentaire : SELECT ALL image_id, image_titre, COUNT(commentaire_id) AS commentaires_nb FROM images LEFT OUTER JOIN commentaires ON image_id = commentaire_image GROUP BY image_id
__________________
Un problème exposé clairement est déjà à moitié résolu Keep It Smart and Simple |
|
|
00
|
|
|
#3 | |||||
|
Membre du Club
![]() Inscription : janvier 2010 Messages : 317 ![]() |
Bonjour. Merci Séb pour l'aide. J'ai retenu la version jointure et je l'ai adapté à mon code. Le code fonctionne.
J'obtiens le résultat souhaité pour le nombre mais un problème se pose, je n'arrive pas à intégrer ce nombre à chaque image incluant s'il n'y a pas de résultat donc 0. Ceci va afficher les images : Code :
Code :
J'ai mis du temps pour faire des scénarios de tests et je ne vois pas comment. J'obtiens soit tous les nombres à toutes les images ou bien le dernier nombre à toutes les images. Un petit coup de main serait apprécié. Citation:
|
|||||
|
|
00
|
|
|
#4 |
|
Expert Confirmé
![]() Inscription : mars 2005 Messages : 2 823 ![]() |
SELECT ALL *, COUNT(idimg) AS n
FROM ori_images AS i LEFT OUTER JOIN ori_comen AS c ON i.id = c.idimg GROUP BY idimg ORDER BY i.id ASC Ici il faut compter les commentaires (comme je l'ai fait plus haut) et pas les images, autrement t'auras toujours au moins 1.
__________________
Un problème exposé clairement est déjà à moitié résolu Keep It Smart and Simple |
|
|
00
|
|
|
#5 | ||||
|
Membre du Club
![]() Inscription : janvier 2010 Messages : 317 ![]() |
J'obtiens que les images qui ont un commentaires dont le nombre est unique.
Toutes les images présentes dans la base : aaa_0000.jpg 5 qqq_5555.jpg 5 sdf_3522.jpg 5 hau_2233.jpg 5 lar_8322.jpg 5 ppp_3829.jpg 5 sup_8392.jpg 5 aaa_0002.jpg 5 ici,il va afficher que le dernier nombre qui est le 5. Le 5 est si je fais la requête comme ceci : Code :
aaa_0000.jpg 8 vrai qqq_5555.jpg 2 vrai sdf_3522.jpg 0 faux il affiche seulement une fois pour les 0 hau_2233.jpg 5 vrai Si je fais ma requête ainsi : Code :
Je veux afficher toutes les images avec leur nombre de commentaire même si c'est 0. Autrement dit, si j'ai 2 images qui ont le même nombre de commentaires, il va en affiché seulement une image avec le nombre. |
||||
|
|
00
|
|
|
#6 | |
|
Expert Confirmé
![]() Inscription : mars 2005 Messages : 2 823 ![]() |
Citation:
Remplace COUNT(idimg) par COUNT(<identifiant du commentaire>)
__________________
Un problème exposé clairement est déjà à moitié résolu Keep It Smart and Simple |
|
|
|
00
|
|
|
#7 | ||
|
Membre du Club
![]() Inscription : janvier 2010 Messages : 317 ![]() |
dans phpmyadmin, ça indique ceci si je remplace par id:
#1052 - Column 'id' in field list is ambiguous en php ça indique ceci : Warning: mysqli_fetch_assoc() expects parameter 1 to be mysqli_result, boolean given in... si je mets ceci qui me renvoi que 4 résultat : Code :
id img_id titre images desc id idimg name desc date n peut-être un conflit avec les id? |
||
|
|
00
|
|
|
#8 |
|
Expert Confirmé
![]() Inscription : mars 2005 Messages : 2 823 ![]() |
Oui. Préfixe id avec le nom de la table des commentaires, comme tu l'as fait dans la jointure.
__________________
Un problème exposé clairement est déjà à moitié résolu Keep It Smart and Simple |
|
|
00
|
|
|
#9 | ||
|
Membre du Club
![]() Inscription : janvier 2010 Messages : 317 ![]() |
ça indique ceci :
mysqli_fetch_assoc() expects parameter 1 to be mysqli_result, boolean given Code :
|
||
|
|
00
|
|
|
#10 |
|
Expert Confirmé
![]() Inscription : mars 2005 Messages : 2 823 ![]() |
COUNT(ori_images.id)
Il faut mettre l'identifiant des commentaires de la table des commentaires, pas un identifiant de la table des images.
__________________
Un problème exposé clairement est déjà à moitié résolu Keep It Smart and Simple |
|
|
00
|
|
|
#11 |
|
Membre du Club
![]() Inscription : janvier 2010 Messages : 317 ![]() |
J'ai essayé les deux. même problème.
ori_images.id est le id des images ori_comen.id est celui des commentaires. |
|
|
00
|
|
|
#12 |
|
Expert Confirmé
![]() Inscription : mars 2005 Messages : 2 823 ![]() |
$resu vaut probablement FALSE.
Fais un mysqli_error( ) pour connaître l'origine du pb.
__________________
Un problème exposé clairement est déjà à moitié résolu Keep It Smart and Simple |
|
|
00
|
|
|
#13 |
|
Membre du Club
![]() Inscription : janvier 2010 Messages : 317 ![]() |
Warning: mysqli_error() expects exactly 1 parameter, 0 given in 32
Warning: mysqli_fetch_assoc() expects parameter 1 to be mysqli_result, boolean given in 34 même dans phpmyadmin, ça fait ca. |
|
|
00
|
|
|
#14 |
|
Expert Confirmé
![]() Inscription : mars 2005 Messages : 2 823 ![]() |
__________________
Un problème exposé clairement est déjà à moitié résolu Keep It Smart and Simple |
|
|
00
|
|
|
#15 |
|
Membre du Club
![]() Inscription : janvier 2010 Messages : 317 ![]() |
Pas d'erreur pour cette information
$resu = mysqli_query($connexion,$res) or mysqli_error($connexion); mais le problème persiste. Et en dehors de php aussi avec phpmyadmin #1054 - Unknown column 'ori_images.id' in 'field list' |
|
|
00
|
|
|
#16 | |
|
Expert Confirmé
![]() Inscription : mars 2005 Messages : 2 823 ![]() |
Montre la requête.
Citation:
__________________
Un problème exposé clairement est déjà à moitié résolu Keep It Smart and Simple |
|
|
|
00
|
|
|
#17 | ||||
|
Membre du Club
![]() Inscription : janvier 2010 Messages : 317 ![]() |
Code :
La base comme elle est : Code :
|
||||
|
|
00
|
|
|
#18 | |
|
Expert Confirmé
![]() Inscription : mars 2005 Messages : 2 823 ![]() |
Ta requête est fausse. Il faut compter les commentaires, pas les images :
SELECT ALL *, COUNT(ori_images.id) AS n <= Ce qui est en rouge est faux. Citation:
__________________
Un problème exposé clairement est déjà à moitié résolu Keep It Smart and Simple |
|
|
|
00
|
|
|
#19 |
|
Membre du Club
![]() Inscription : janvier 2010 Messages : 317 ![]() |
Il n'y a plus d'erreur mais le résultat est de quatre seulement.
|
|
|
00
|
|
|
#20 |
|
Expert Confirmé
![]() Inscription : mars 2005 Messages : 2 823 ![]() |
Peux-tu montrer la requête stp ?
__________________
Un problème exposé clairement est déjà à moitié résolu Keep It Smart and Simple |
|
|
00
|
Copyright © 2000-2012 - www.developpez.com