Boumbadaboum Posté 28 Juillet 2005 Posté 28 Juillet 2005 (modifié) Bon alors comme le sujet précédent était mauvais je le réécris en effacant les réponses que j'avais moi même laissé (plutot que d'ouvrir un nouveau sujet): Voila maintenant c'est beaucoup plus simple, comment traduire en bon mysql: Pour le tuple "iceberg" de la table "definition" compter tous les liens de la table Annuaire qui ont le libelle "iceberg" et ajouter le total dans le champ totalLien du tuple "iceberg" de la table definition. ça me ferait gagner bcp de temps si vous aviez la réponse. Merci d'avance Modifié 28 Juillet 2005 par Boumbadaboum
Striker Posté 29 Juillet 2005 Posté 29 Juillet 2005 Tu utilise COUNT pour obtenir le nombre de liens de la table Annuaire, puis tu lui assigne une close WHERE pour faire ton tri. Apres tu fait un INSERT vers ta table définition.
Portekoi Posté 29 Juillet 2005 Posté 29 Juillet 2005 Requete 1 : //Je fais ma requete$sql = "select count(lien) as nblien from Annuaire where libelle = 'iceberg'";$requete = mysql_query($sql) or die(mysql_error());//Je récupère$nblien = mysql_result($requete,0,"nblien");//Je fais mon update$sql = "update definition set totalLien = '".$nblien."' where libelle = 'iceberg'"$requete = mysql_query($sql) or die(mysql_error()); Test ca pour voir Je n'ai pas voulu compliquer la chose pour que tu comprennes bien ce que j'ai fais A toute Portekoi
Boumbadaboum Posté 29 Juillet 2005 Auteur Posté 29 Juillet 2005 avant que j'essaye y'a un gars qui m'a suggéré ça: update definition set totalLien = count(a.lien) from definition d inner join annuaire a on d.libelle = a.libelle where d.libelle='iceberg' Vous en pensez quoi? (nb je passe par phpMyAdmin)
Portekoi Posté 29 Juillet 2005 Posté 29 Juillet 2005 Je ne sais pas si c'est supporté par Mysql... Tiens nous au courant
Boumbadaboum Posté 29 Juillet 2005 Auteur Posté 29 Juillet 2005 Bon bah je vais vous faire de la peine, mais j'ai rempli les champs de phpMyAdmin à la main la requête du dessus je l'essaye même pas ça va faire griller tout le réseau internet je sens. (j'ai copié collé ta requête qd même portekoi, ça va me servir de modèle pr autre chose, merci )
Dan Posté 29 Juillet 2005 Posté 29 Juillet 2005 la requête du dessus je l'essaye même pas ça va faire griller tout le réseau internet je sens. Griller Internet ? Peut-être pas tout de même La requête que t'a donné ton ami me semble bonne, et n'a rien pour faire griller le net, ni détruire quoi que ce soit dans ta base. Au pire, il suffisait de faire update definition set totalLien = 0 where 1 pour revenir à la case départ. Dan
Boumbadaboum Posté 29 Juillet 2005 Auteur Posté 29 Juillet 2005 Bon c'est noté, merci pour ton avis Dan. J'en suis tjrs avec mes requêtes sql et je voudrais comprendre celle la: $cptLien="SELECT sum(nbrLiens) FROM definitions";$resultatLien =mysql_query($cptLien)or die ('Erreur : '.mysql_error() );;while ($RLiens = mysql_fetch_array($resultatLien)) {echo "$Rliens[0] liens";} Le but est d'afficher le nombre de liens pour chaque définition. ça fonctionne (j'ai chopé ça sur le hub). Mais je voudrais comprendre pourquoi on place $Rliens[0] à la fin? pourquoi [0] ? Allez ,dîtes, vous savez j'en suis sur
Portekoi Posté 29 Juillet 2005 Posté 29 Juillet 2005 (modifié) C'est pas dur : Si tu fais un mysql_fetch_array, les résultats seront renvoyé dans un tableau. QU'est ce qu'un tableau? Un tableau est une sorte de 'pile' où l'on entasse les données. Edit : Grosse boulette de ma part Exemple ici : http://www.nexen.net/docs/php/annotee/func...fetch-array.php ++ Modifié 29 Juillet 2005 par portekoi
Boumbadaboum Posté 29 Juillet 2005 Auteur Posté 29 Juillet 2005 (modifié) En faites le chiffre indique sur quelles lignes se placer Bien justement, pourquoi cela affiche le total de liens différents pour l'ensemble des colonnes alors que c'est la [0] qui est mentionnée? Modifié 29 Juillet 2005 par Boumbadaboum
Boo2M0rs0 Posté 30 Juillet 2005 Posté 30 Juillet 2005 Je dirai plutot que le chiffre indique la collonne (et pas la ligne). Sum(nbrlien) est une de ses collones et est designé par le chiffre 0. Pour passer d'une ligne à l'autre il faut réexecuter mysql_fetch_row (ou équivalent) ce qui renverra un autre tableau avec autant de collone mais avec les valeurs de la ligne suivante. Quand mysql_fetch_row commence à renvoyer False au lieu du tableau , ça signifie que toute les lignes de résultats ont été parcourues. Il y a un truc que je trouve bizarre par contre dans ton script: la requête SELECT sum(nbrLiens) FROM definitions Renvera toujours une seule ligne de résultat. Alors pourquoi utilises-tu une boucle while ? Dans cette situation on pourrai écrire: $RLiens = mysql_fetch_array($resultatLien); echo "$Rliens[0] liens";
Sujets conseillés
Veuillez vous connecter pour commenter
Vous pourrez laisser un commentaire après vous êtes connecté.
Connectez-vous maintenant