trouver des enregistrements en fction d'un seuil

Eléphant du PHP | 289 Messages

05 oct. 2005, 11:19

Bonjour,

Je suis entrain de faire une page dans le but de trouver tous les enregistrements compris entre 2 dates et ayant une somme de points supérieures a un seuil.

Pour les dates et le seuil, g dans ma pages 3 zones de texte que j'utilise en tant que variable dans ma requete que voici:

Code : Tout sélectionner

SELECT registre.NumDossier, registre.NumOT, registre.NumPompe, registre.Marques, registre.Models, registre.Secteur, registre.Urgence, registre.Datedebut, registre.Cloture, SUM(points.Points) as test FROM registre JOIN points ON registre.ID=points.Numdossier WHERE registre.Datedebut > 'colname1' and registre.Datedebut < 'colname2' GROUP BY registre.Numdossier HAVING 'test'>'colname3' ORDER BY registre.Datedebut
J'arrive a trouver tous le enregistrements entre les 2 dates, mais le seuil ne fonctionne pas :=(.

est ce que quelqu'un voit d'ou ca peut venir?

Merci de votre aide,
FAb
je dois être la seule souris au monde qui ne fait pas peur aux néléphants ! :=)

Mammouth du PHP | 19672 Messages

05 oct. 2005, 11:22

ne mets pas les noms de colonne entre apostrophes. Pour protéger les noms, utilises l'accent grave [`].
Codez en pensant que celui qui maintiendra votre code est un psychopathe qui connait votre adresse :axe:

Eléphant du PHP | 289 Messages

05 oct. 2005, 11:32

alut,

je viens d'essayer de supprimer tous les ' ' mais ca ne marche pôa :(

g aussi essayé avec les`, mais sans resultats :( :(

tu vois d'ou ca peut venir?

FAb
je dois être la seule souris au monde qui ne fait pas peur aux néléphants ! :=)

Mammouth du PHP | 19672 Messages

05 oct. 2005, 13:12

Suggestion de modification, à tester :

Code : Tout sélectionner

SELECT registre.NumDossier, registre.NumOT, registre.NumPompe, registre.Marques, registre.Models, registre.Secteur, registre.Urgence, registre.Datedebut, registre.Cloture, SUM(points.Points) AS test FROM `registre`, `points` WHERE registre.ID = points.Numdossier AND registre.Datedebut > `colname1` AND registre.Datedebut < `colname2` AND `test`>`colname3` ORDER BY registre.Datedebut
Par contre, je ne vois pas trop à quoi correspondent colname1, 2 et 3 ...
:?:
Codez en pensant que celui qui maintiendra votre code est un psychopathe qui connait votre adresse :axe:

Eléphant du PHP | 289 Messages

06 oct. 2005, 07:32

Alut,

avec ta proposition, j'obtiens le message d'erreur suivant:
unknown colum '1' in 'where clause'
Ca peut venir de quoi?

FAb
je dois être la seule souris au monde qui ne fait pas peur aux néléphants ! :=)

Mammouth du PHP | 19672 Messages

06 oct. 2005, 08:27

Ça veut dire qu'il y a une erreur de virgule dans la requête SQL, fais voir la requête générée... :-k
Codez en pensant que celui qui maintiendra votre code est un psychopathe qui connait votre adresse :axe:

Eléphant du PHP | 289 Messages

06 oct. 2005, 08:34

alut
fais voir la requête générée...
et tu fais ca comment? :shock:
je dois être la seule souris au monde qui ne fait pas peur aux néléphants ! :=)

Mammouth du PHP | 19672 Messages

06 oct. 2005, 09:04

$sql = "SELECT .....etc....";
echo($sql);
;)
Codez en pensant que celui qui maintiendra votre code est un psychopathe qui connait votre adresse :axe:

Eléphant du PHP | 289 Messages

06 oct. 2005, 09:10

Code : Tout sélectionner

mysql_select_db($database_ateliermeca, $ateliermeca); $query_avisot = "SELECT secteurs.secteurs as toto, elements.details as tata ,count(*) as titi FROM expertise, secteurs, elements, registre WHERE registre.ID= expertise.numdossier and secteurs.id=registre.secteur and expertise.element=elements.ID GROUP BY expertise.Element, secteurs.Secteurs ORDER BY titi DESC "; $avisot = mysql_query($query_avisot, $ateliermeca) or die(mysql_error()); $row_avisot = mysql_fetch_assoc($avisot); $totalRows_avisot = mysql_num_rows($avisot);
c ca?
je dois être la seule souris au monde qui ne fait pas peur aux néléphants ! :=)

Mammouth du PHP | 19672 Messages

06 oct. 2005, 09:19

Salut,
avec ta proposition, j'obtiens le message d'erreur suivant:
unknown colum '1' in 'where clause'
L'indication du message fait mention d'une colonne inexistante dans la clause WHERE : regarde donc si dans cette clause WHERE les noms de champs utilisés existent bien en faisant attention à la casse (Majuscules/Minuscules)
Codez en pensant que celui qui maintiendra votre code est un psychopathe qui connait votre adresse :axe:

Eléphant du PHP | 289 Messages

06 oct. 2005, 11:00

Je viens de verifier tous les champs de la requete mais ils st tous corrects :( et g tjs mon message d'erreur!

ce qui me parait bisard, c que qd ca fonctionnait, il tenait bien compte des variables 1 et 2 ( celles pour les dates) mais ignorait la variable pour le seuil :?:

si tu as une autre sol... :wink:
je dois être la seule souris au monde qui ne fait pas peur aux néléphants ! :=)

Mammouth du PHP | 19672 Messages

06 oct. 2005, 11:25

Si tu essayes ta requête directement dans phpMyAdmin, ça retourne quoi comme résultat ?
Codez en pensant que celui qui maintiendra votre code est un psychopathe qui connait votre adresse :axe:

Eléphant du PHP | 289 Messages

10 oct. 2005, 08:34

alut,

dsl pour le delai mais g u un WE a rallonge 8)

qd je teste la requete avec les ``, il me met un message d'erreur, mais qd je mets la requete suivante:
Votre requête SQL a été exécutée avec succès (traitement: 0.1880 sec.)

requête SQL : [Modifier] [Expliquer SQL] [Créer source PHP]
SELECT registre.NumDossier, registre.NumOT, registre.NumPompe, registre.Marques, registre.Models, registre.Secteur, registre.Urgence, registre.Datedebut, registre.Cloture, SUM( points.Points ) AS test
FROM registre, points
WHERE registre.ID = points.Numdossier AND registre.Datedebut > 'colname1' AND registre.Datedebut < 'colname2' AND 'test' > 'colname3'
GROUP BY registre.NumDossier
ORDER BY test DESC LIMIT 0 , 30
il ni a pas de pb. ce que je ne comprends pas, c qu'il ne tienne pas compte de la variable definissant le seuil :shock: alors que cette requete fonctionne parfaitement sous phpmyadmin :?
je dois être la seule souris au monde qui ne fait pas peur aux néléphants ! :=)

Mammouth du PHP | 19672 Messages

10 oct. 2005, 08:55

Reprenons ta requête :

Code : Tout sélectionner

SELECT registre.NumDossier, registre.NumOT, registre.NumPompe, registre.Marques, registre.Models, registre.Secteur, registre.Urgence, registre.Datedebut, registre.Cloture, SUM( points.Points ) AS test FROM registre, points WHERE registre.ID = points.Numdossier AND registre.Datedebut > 'colname1' AND registre.Datedebut < 'colname2' AND 'test' > 'colname3' GROUP BY registre.NumDossier ORDER BY test DESC LIMIT 0 , 30
Est-ce que colname1, colname2, colname3 et test sont des noms de colonne d'une des deux tables mentionnées dans la clause FROM ?
Codez en pensant que celui qui maintiendra votre code est un psychopathe qui connait votre adresse :axe:

Eléphant du PHP | 289 Messages

10 oct. 2005, 10:20

le colname 1, 2 & 3 correspondent a des zones de textes dans la page.
test correspond a la somme des points par dossiers
je dois être la seule souris au monde qui ne fait pas peur aux néléphants ! :=)