résultat :Code:
1
2
3
4
5 SELECT ALL * , COUNT( c.id ) 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
aaa_0000.jpg 8
qqq_5555.jpg 2
sdf_3522.jpg 0
hau_2233.jpg 5
Version imprimable
résultat :Code:
1
2
3
4
5 SELECT ALL * , COUNT( c.id ) 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
aaa_0000.jpg 8
qqq_5555.jpg 2
sdf_3522.jpg 0
hau_2233.jpg 5
GROUP BY idimg <= Ceci est faux, il faut grouper par image, donc sur i.id
Ça sort tous les résultats :
Vraiment MERCI Séb! Je suis content. Vous avez eu une patience énorme pour moi!Code:
1
2
3
4
5 SELECT ALL * , COUNT( c.id ) AS n FROM ori_images AS i LEFT OUTER JOIN ori_comen AS c ON i.id = c.idimg GROUP BY i.id ORDER BY i.id ASC
ça sort tout:
Merci Séb, vous avez été très généreux avec moi. MERCI!Code:
1
2
3
4
5 SELECT ALL * , COUNT( c.id ) AS n FROM ori_images AS i LEFT OUTER JOIN ori_comen AS c ON i.id = c.idimg GROUP BY i.id ORDER BY i.id ASC
Je vais intégrer ça dans ma page.. je vais espérer que ça va
bien rouler étant donné que j ai aussi le page par page dans
la requête.
ça devrait aller ca fonctionnait avant.
La requête qui était ça
est devenu ça :Code:SELECT * FROM ori_images ORDER BY id ASC LIMIT $ledebut,$nb_affichage_par_page
ça changé de quoi dans mon affichage.Code:
1
2
3
4
5 SELECT ALL * , COUNT( c.id ) AS n FROM ori_images AS i LEFT OUTER JOIN ori_comen AS c ON i.id = c.idimg GROUP BY i.id ORDER BY i.id ASC $ledebut,$nb_affichage_par_page
Le ID, le TITRE et la DESC des images ont changés pour ceux
des commentaires. Je tente les ajustement. Si c'est concluant, je mets en résolu après.
Si je pourrais mettre comme ceci :
?Code:
1
2 $ligne['ori_image.titre']
Il manque la clause LIMIT.Citation:
Code:ORDER BY i.id ASC $ledebut,$nb_affichage_par_page
Parce que tes tables ont des champs de mêmes noms, ce qui n'est pas une bonne pratique.Citation:
Le ID, le TITRE et la DESC des images ont changés pour ceux
des commentaires. Je tente les ajustement.
Regarde dans l'exemple donné dans mon 1er message, chaque champ a un nom unique ;)
Plutôt $ligne['i.titre'] à cause des AS de la jointure.Citation:
Si je pourrais mettre comme ceci :
?Code:
1
2 $ligne['ori_image.titre']
La solution des jointure fonctionnerait si mes champs des tables aurait été tous différents. J'ai en commun (id, titre et desc) dans mes deux tables. Il faudrait que je change à pas mal de place le code.
Alors, je tests la première solution:
Affiche bien tous les nombre de commentaires.Code:
1
2
3
4
5 SELECT COUNT( c.id ) AS n FROM ori_images AS i LEFT OUTER JOIN ori_comen AS c ON i.id = c.idimg GROUP BY i.id ORDER BY i.id ASC
Mais, si j'ajoute :
qui devient :Code:UPDATE ori_images SET img_id =
J'obtiens le message suivant dans phpmyadmin:Code:
1
2
3
4
5
6
7 UPDATE ori_image SET idimg = (SELECT COUNT( c.id ) AS n FROM ori_images AS i LEFT OUTER JOIN ori_comen AS c ON i.id = c.idimg GROUP BY i.id ORDER BY i.id ASC)
Code:#1093 - You can't specify target table 'ori_images' for update in FROM clause
Tu ne devrais pas avoir tant de scripts que ça à corriger.
Mauvaise idée.Citation:
Alors, je tests la première solution:
Cela ne respecte pas ce que je t'avais donné dans mon 1er message.Citation:
qui devient :Code:UPDATE ori_images SET img_id =
Code:
1
2
3
4
5
6
7 UPDATE ori_image SET idimg = (SELECT COUNT( c.id ) AS n FROM ori_images AS i LEFT OUTER JOIN ori_comen AS c ON i.id = c.idimg GROUP BY i.id ORDER BY i.id ASC)
Il faut que tu reprennes ma requête et que tu l'adaptes à ta BdD, il n'y a rien (et surtout pas de jointure) à ajouter.
J'ai beaucoup de fichier qui utilise les mêmes tables.
J'essais ceci :
mais je suis un peu perdu avec la clause whereCode:
1
2
3
4
5 UPDATE ori_images SET img_id = (SELECT COUNT(*) FROM ori_comen WHERE idimg = id)
Le seul moyen d'afficher le nombre de commentaires avec les 0 :
Code:
1
2
3
4
5 SELECT COUNT( c.id ) AS n FROM ori_images AS i LEFT OUTER JOIN ori_comen AS c ON i.id = c.idimg GROUP BY i.id ORDER BY i.id ASC
Essaie ceci :Code:
1
2
3
4
5 UPDATE ori_images SET img_id = # Pourquoi changer l'identifiant de l'image ? (SELECT COUNT(*) FROM ori_comen WHERE idimg = id) # id est ambigu
Code:
1
2
3
4
5
6
7 UPDATE ori_images SET nb_commentaires = # Champ nb_commentaires à créer ( SELEC COUNT(*) FROM ori_commen WHERE ori_commen.idimg = ori_images.id )
Dans phpmyadmin, ça fonctionne:
J'ai laissé img_id étant donné que ce champ est justement pour stocker les nombres.Code:
1
2
3
4
5
6
7 UPDATE ori_images SET img_id = ( SELECT COUNT(*) FROM ori_comen WHERE ori_comen.idimg = ori_images.id )
Je vais faire la version en PHP.. Merci Séb! :merci:
F:lefou::resolu::merci: Séb!
Fantastique!
En plus, cette solution est simple. Rien à changer.
J'ai appris quelque chose et ça va me servir dans le future.