Aller au contenu

traduire en français une requete sql


Sujets conseillés

Posté (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é par Boumbadaboum
Posté

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.

Posté

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

Posté

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)

Posté

Bon bah je vais vous faire de la peine, mais j'ai rempli les champs de phpMyAdmin à la main :huh:

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 :) )

Posté
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 :lol:

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

Posté

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 :rolleyes:

Posté (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é par Boumbadaboum
Posté

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 ? :huh:

Dans cette situation on pourrai écrire:

$RLiens = mysql_fetch_array($resultatLien);

echo "$Rliens[0] liens";

Veuillez vous connecter pour commenter

Vous pourrez laisser un commentaire après vous êtes connecté.



Connectez-vous maintenant
×
×
  • Créer...