Boucle de comptage sur 2 requetes SQL

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : Boucle de comptage sur 2 requetes SQL

par agité » 02 nov. 2007, 17:31

Tu peux poster le schéma de tes tables stp ?
bien sur en image ou en code ?
En "code" on à l'avantage de non seulement comprendre le schéma mais aussi de pouvoir effectuer des tests rapidement.
c'est vrai mais ca aurait pu l'être aussi pour la structure des tables et leur liaisons, comme a la création d'un projet.

enfin tout est bien qui vas bien ca marche :p

par Truc » 02 nov. 2007, 17:10

Tu peux poster le schéma de tes tables stp ?
bien sur en image ou en code ?
En "code" on à l'avantage de non seulement comprendre le schéma mais aussi de pouvoir effectuer des tests rapidement.

par agité » 02 nov. 2007, 16:56

boulay attitude des requete mysql_fetch_array sans mysql_query ca marche pas

owned

:?

par agité » 02 nov. 2007, 16:39

Je trouve bizarre que tu utilises des LIKE sur des identifiants.
Pourquoi ne pas faire cela en une seule requete?
$requete = "
  SELECT *
  FROM lot
  WHERE Id_vendeur IN (
    SELECT Id 
    FROM utilisateur
    WHERE Profil LIKE '".$Option2."' "
  )
  AND Id_etat LIKE '".$Option1."'";
Ca ne t'irai pas?
parfait ^^

edit = il me retourne une erreur SQL :(

par d0m » 02 nov. 2007, 16:04

Je trouve bizarre que tu utilises des LIKE sur des identifiants.
Pourquoi ne pas faire cela en une seule requete?
$requete = "
  SELECT *
  FROM lot
  WHERE Id_vendeur IN (
    SELECT Id 
    FROM utilisateur
    WHERE Profil LIKE '".$Option2."' "
  )
  AND Id_etat LIKE '".$Option1."'";
Ca ne t'irai pas?

par agité » 02 nov. 2007, 15:56

Tu peux poster le schéma de tes tables stp ?
bien sur en image ou en code ?

En code, table utilisateur :

Code : Tout sélectionner

CREATE TABLE `utilisateur` ( `Id` int(11) NOT NULL auto_increment, `Nom` varchar(50) collate utf8_unicode_ci NOT NULL, `Prenom` varchar(50) collate utf8_unicode_ci NOT NULL, `Identifiant` varchar(20) collate utf8_unicode_ci NOT NULL, `motdepasse` blob NOT NULL, `Observations` text collate utf8_unicode_ci NOT NULL, `Rang` enum('user','s_user','admin') collate utf8_unicode_ci NOT NULL default 'user', `Profil` enum('aucun','commercial','gestionnaire') collate utf8_unicode_ci NOT NULL default 'commercial', PRIMARY KEY (`Id`), KEY `rang` (`Rang`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci AUTO_INCREMENT=27 ;
Pour l'autre table :

Code : Tout sélectionner

CREATE TABLE `lot` ( `Id` int(11) NOT NULL auto_increment, `Id_vendeur` int(11) NOT NULL, `Id_etat` enum('1','2','3') collate utf8_unicode_ci NOT NULL default '1', PRIMARY KEY (`Id`), ) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci AUTO_INCREMENT=4 ;

par Calimero » 02 nov. 2007, 15:44

Tu peux poster le schéma de tes tables stp ?

Boucle de comptage sur 2 requetes SQL

par agité » 02 nov. 2007, 13:55

Bonjour,

Je code une fonction qui me permet de compter le nombre de reponse sur 2 options

$Option1 et $Option2

L'option1 me permet de faire une premiere requete, qui m'affichera le nombre d'id correspondant

L'option2 doit calculer le nombre d'entrées comprennant toute les id de l'option1 et l'état de l'option2

ma fonction fait :
function Compter_Entrees($Option1,$Option2)
{
$Sql_Vendeurs = mysql_query("SELECT * FROM utilisateur WHERE Profil LIKE '".$Option2."' ");
$Array_vendeur = mysql_fetch_array($Sql_Vendeurs);

// Compter le nombre d'entrées sur la base de donnée en {fonction de la recherche
$Sql_Nombre_Entrees = mysql_query("SELECT * FROM lot WHERE Id_vendeur LIKE '".$Array_vendeur['Id']."' AND Id_etat LIKE '".$Option1."'");
$Array_Nb_Entrees = mysql_fetch_array($Sql_Nombre_Entrees);

echo "SELECT * FROM lot WHERE Id_vendeur LIKE '".$Array_vendeur['Id']."' AND Id_etat LIKE '".$Option1."'";
$Req_Sql_Nombre_Entrees = mysql_num_rows($Sql_Nombre_Entrees) or die (mysql_error());


echo $Req_Sql_Nombre_Entrees;
// Afficher le nombre de resultat
	echo "<b>Il y a ".$Req_Sql_Nombre_Entrees['Id']." lots correspondants à vos critères de recherche</b> <br />";
}		
Donc il me retourne bien toute les ID de la premiere requete, mais une fois que celle ci sont sous forme de tableau mysql_fetch_array, il faudrait que le 2eme calcule se fasse pour chaque ID comprennant l'option2 et me retourne le nombre de resultat.

Le problème est que pour l'instant le calcul se fait uniquement sur une seul ID, j'ai tenter les boucle WHILE et FOR EACH sans succes puisqu'il me marquera bien la fonction mais ne calculera pas.

Un SELECT COUNT(*) aurait pu faire l'affaire mais il me retournera lui aussi qu'un seul calcul.

Une idée ?