SQL, Plusieurs conditions?

Meliani -  
 oooopin -
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 1802 Date d'inscription   Statut Membre Dernière intervention   340
 
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 1802 Date d'inscription   Statut Membre Dernière intervention   340
 
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
Meliani
 
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 1802 Date d'inscription   Statut Membre Dernière intervention   340
 
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
Meliani
 
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
 
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
marina
 
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
oooopin
 
AND Z in (...,...,...,)
0