Version complète: sur le forum Webmaster Hub : traduire en français une requete sql
Webmaster Hub > Création et exploitation de Sites Internet > Les langages du Net > PHP
Boumbadaboum
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:


CODE
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
Striker
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
Requete 1 :

CODE
//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 smile.gif

Je n'ai pas voulu compliquer la chose pour que tu comprennes bien ce que j'ai fais smile.gif

A toute

Portekoi
Boumbadaboum
avant que j'essaye y'a un gars qui m'a suggéré ça:

CODE
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
Je ne sais pas si c'est supporté par Mysql...

Tiens nous au courant smile.gif
Boumbadaboum
Bon bah je vais vous faire de la peine, mais j'ai rempli les champs de phpMyAdmin à la main huh.gif

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 smile.gif )
Dan
CITATION(Boumbadaboum @ vendredi 29 juillet 2005, 11h22)
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 laugh.gif
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
CODE
update definition  set totalLien = 0 where 1

pour revenir à la case départ. wink.gif

Dan
Boumbadaboum
Bon c'est noté, merci pour ton avis Dan.

J'en suis tjrs avec mes requêtes sql et je voudrais comprendre celle la:

CODE
$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 rolleyes.gif
Portekoi
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

++
Boumbadaboum
CODE
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?
Boo2M0rs0
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
SQL
SELECT sum(nbrLiens) FROM definitions

Renvera toujours une seule ligne de résultat. Alors pourquoi utilises-tu une boucle while ? huh.gif

Dans cette situation on pourrai écrire:
$RLiens = mysql_fetch_array($resultatLien);
echo "$Rliens[0] liens";
Ceci est une version "bas débit" de notre forum. Pour voir la version complète avec plus d'information, la mise en page et les images, veuillez cliquer ici.