SQL, Plusieurs conditions?

Fermé
Meliani - 5 avril 2007 à 09:50
 oooopin - 10 août 2008 à 06:26
Bonjour,
Je voudrais un faire un programme en SQL.
Le probleme j'ai pas envi de réecrire la même formule pour tous les champs.
Alors, je veux afficher par pas de 100 le pourcentage de clients qui se trouve à cette distance.
Exemple;

Client: distance: 100-200: 200-300:
1 220 20% 50%
2 3260 31% 26%
3....
4....
Voila et j'ai pas de champs 100-200 et 200-300.....jusqu'a9000-1000, je peux les créeer mais je sais aussi que je peux m'en passer . Les champs clients et distance sont données.

Je vous remercie d'avance pour votre aide

6 réponses

Stringman621 Messages postés 1308 Date d'inscription mardi 13 décembre 2005 Statut Membre Dernière intervention 1 septembre 2012 338
6 avril 2007 à 13:27
Re !

Ya un truc que je pige pas, tu dis que tu utilise easyphp (donc tu developpe en php), et tu dis que tu ne comprend pas mon code, mais mon code c'est aussi du php ! ;)
Bref, c'est pas grave c'était juste comme ca !

Je ne suis pas sur mais, je ne pense pas que tu puisse utiliser une fonction d'agregation (COUNT) dans une requete de mise a jour.
La solution serait de faire une requete (SELECT) qui te donne le compte de tes clients dans une zone et que le résultat de cette requete tu l'utilise dans ta requete de mise a jour :

Ex :
$req = " SELECT COUNT(bidule) FROM TRUC[...];" 
$var = [resultat de ta requete]

$update = "UPDATE TRUC2 SET cpte_bidule=".$var."[...]";

Voili Voilou

Si ya un truc qui coince n'hésite pas ! ;)
1
Stringman621 Messages postés 1308 Date d'inscription mardi 13 décembre 2005 Statut Membre Dernière intervention 1 septembre 2012 338
5 avril 2007 à 11:41
Salut a toi !

Je pense avoir compris ce que tu souhaite faire, je te propose une solution :

for($i=1;$i<VALEUR_MAX;$i++)
{
  $req = "SELECT * FROM CLIENT WHERE distance BETWEEN ".100*$i." ";
  $req .= "AND ".100*($i+1).";

//-- execution de la requete
}



Dis moi si ca te convient ou alors si je suis à coté de la plaque ;)

Tchô !
0
Salut,
Au fait je parle du sql et j'utilise des commandes beaucoup plus simple je connais pas du tout ton langage, j'utilse easy php comme logiciel et le SQl je manipule une BD.
Et j'ai besoin de mettre à jour ma table; J'ai rentré tout les chapms 100-200 200-300 300-400 .... jusqu'à 9000 à la main, voila un exemple;


Ville Clients Longueur 100-200 200-300 300-400
A 1 254 0 0 0
A 2 100 0 0 0
B 3 369 0 0 0

Quand je fait;

UPDATE "name_TABLE"
SET
'100-200'=COUNT(CLIENTS) WHERE 'Longueur' BETWEEN 100 AND 200
GROUP BY 'ville'

Il m'affiche qu'il ya une erreur, en plus je veux savoir comment mettre à jour ma table d'un seule coup.
Merci pour ta réponse comme même
Merci d'avance mes amis
0
Stringman621 Messages postés 1308 Date d'inscription mardi 13 décembre 2005 Statut Membre Dernière intervention 1 septembre 2012 338
6 avril 2007 à 13:38
Re re !

je viens de trouver un truc!
En effet tu ne peux utiliser les fonctions d'agregats que dans une clause SELECT ou HAVING :

http://www.loribel.com/info/memento/sql.html
0
Salut,
Ah ok, c'est pour cela que ça bloque!!!!
Trés tu assure trop en fait.
Si j'ai bien compris je dois créer une table intermédiaire pour compter les éléments. Je vais faire sa et je te dirai si sa marche
Merci encore une fois
0
Meliani > Meliani
6 avril 2007 à 14:52
Oups, tu as ecris une zone donc un champ !! pas besoin de créer une autre table sa simplifie encore la tache je te dirai la suite
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Bonjour,
J'ai un problème pour exécuter ma syntaxe SQL. En fait, je voudrais faire une requête de style : select X from ... where Y=... and Z=....;....;....;...
La donnée Z doit prendre plusieurs valeurs différentes, et je n'arrive pas à écrire la requête correspondante.
Merci de votre aide
0
AND Z in (...,...,...,)
0