Page 1 sur 1

problème calcul

Posté : 30 mai 2006, 16:25
par Invité
Bonjour,

Voila, j'ai un problème avec une requete, cela doit etre tout bete, mais j'ai un trou.
voici ma table, elle s'appelle tableau_prix

Code : Tout sélectionner

CODE_TAB NUM_CONTRAT PERIODICITE_SEM SUPERFICIE TARIF 1 1 1 20 15.00 2 1 1 40 20.00 3 1 1 60 25.00 4 1 1 80 30.00 5 1 1 100 35.00 6 1 1 120 40.00 7 1 2 20 25.00 8 1 2 40 35.00 9 1 2 60 35.00 10 1 2 80 40.00 11 1 2 100 45.00 12 1 2 120 50.00 15 1 3 20 35.00 16 1 3 40 40.00 17 1 3 60 45.00 18 1 3 80 50.00 19 1 3 100 55.00 20 1 3 120 60.00

Donc, en faite je voudrai récupérer le nombre de valeur différente pour periodicite_sem. En l'occurence, ici 3 car il y a 1, 2 et 3

En faite, j'arrive a faire afficher 1, 2, 3 ou le nombre pour chacun 6,6,6 ou encore le nombre totale 18 mais pas 3.

Merci d'avance.
J'espère que vous aurez compris.

Posté : 30 mai 2006, 16:30
par guilt92
EDIT : Désolé mal lu réponse inapproprié et impossible d effacer :(

Posté : 30 mai 2006, 16:30
par zeus
Dans la doc SQL, il existe la fonction COUNT qui permet de compter le nomre d'occurence.

donc si tu fait une requete qui regroupe les différentes valeurs de periodicite_sem, tu devrais pouvoir t'en sortir ;)

http://www.asp-irine.com/rubriques/cour ... ns_sql.htm

Posté : 30 mai 2006, 16:32
par zeus

Code : Tout sélectionner

SELECT DISTINCT(PERIODICITE_SEM) FROM table WHERE PERIODICITE_SEM=(SELECT MAX(PERIODICITE_SEM) FROM TABLE) ORDER BY PERIODICITE_SEM
Je sais pas si c'est ça que tu veux, mais ca devrait te donner 3...
:shock:

je pense qu'il veut plutot compter le nombre de valeur différente de periodicité_sem

De plus, je tiens à rappeller, dans le postulat où tu utilises MySQL, que les sous-requetes ne sont pas disponibles avant la v 4.1 ;)

Posté : 30 mai 2006, 16:39
par guilt92
oui entièrement désolé j ai réalisé ca à la relecture et je voulais effacer mais comme tu avais posté une autre réponse dans l interval je ne pouvais pas :( . D'ou le EDIT :(

Posté : 30 mai 2006, 16:39
par Invité
merci, j'ai la version MySQL 5.0.17 mais cela me marque que j'ai une erreur de syntaxe.
En effet je pense que je dois utiliser une requete imbiqué et un count. Mais je n'arrive pas a trouver la manière de procédé.(sans erreur)

Posté : 30 mai 2006, 16:41
par zeus
@guilt : pas grave ;)

@invité : pas la peine de faire si compliqué

Est-ce que tu as suivi mon lien ?

Posté : 30 mai 2006, 16:42
par Invité
escuse si ça marche en faite

merci

Posté : 30 mai 2006, 16:44
par Invité
mais en faite non, ça marche pas. car mon champs periodicité semaine peut très bien ne pas etre 1, 2, 3 mais etre 1,3,5

Posté : 30 mai 2006, 16:47
par zeus
:-k est-ce que tu es sur ? ce n'est pas parce que ça retourne 3 que ça marche ... :?

Essaye de rajouter une ligne pour voir si tu obtiens bien toujours le bon résultat

De plus, il existe une requete beaucoup plus simple

Code : Tout sélectionner

SELECT COUNT(DISTINCT(periodicite_sem)) FROM table

Posté : 30 mai 2006, 16:48
par Invité
oui, en faite c'est tout con, je me rappelai plus que l'on pouvais faire count(distinct...)

SELECT COUNT( DISTINCT periodicite_sem )
FROM tableau_prix
where num_contrat='1'

merci beaucoup

Posté : 30 mai 2006, 16:48
par Invité
oups pas vu que tu avai repondu

merci