Page 1 sur 5

trouver des enregistrements en fction d'un seuil

Posté : 05 oct. 2005, 11:19
par FAbrice
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

Posté : 05 oct. 2005, 11:22
par Cyrano
ne mets pas les noms de colonne entre apostrophes. Pour protéger les noms, utilises l'accent grave [`].

Posté : 05 oct. 2005, 11:32
par FAbrice
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

Posté : 05 oct. 2005, 13:12
par Cyrano
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 ...
:?:

Posté : 06 oct. 2005, 07:32
par FAbrice
Alut,

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

FAb

Posté : 06 oct. 2005, 08:27
par Cyrano
Ç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

Posté : 06 oct. 2005, 08:34
par FAbrice
alut
fais voir la requête générée...
et tu fais ca comment? :shock:

Posté : 06 oct. 2005, 09:04
par Cyrano
$sql = "SELECT .....etc....";
echo($sql);
;)

Posté : 06 oct. 2005, 09:10
par FAbrice

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?

Posté : 06 oct. 2005, 09:19
par Cyrano
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)

Posté : 06 oct. 2005, 11:00
par FAbrice
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:

Posté : 06 oct. 2005, 11:25
par Cyrano
Si tu essayes ta requête directement dans phpMyAdmin, ça retourne quoi comme résultat ?

Posté : 10 oct. 2005, 08:34
par FAbrice
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 :?

Posté : 10 oct. 2005, 08:55
par Cyrano
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 ?

Posté : 10 oct. 2005, 10:20
par FAbrice
le colname 1, 2 & 3 correspondent a des zones de textes dans la page.
test correspond a la somme des points par dossiers