Aide pour une requete

Aide pour une requete - SQL/NoSQL - Programmation

Marsh Posté le 12-12-2007 à 13:11:26    

Bonjour,  
 
J'ai un problème pour une requete que je n'arrive absolument pas à écrire.
Il s'agit en fait d'une requete de vérification de mot de passe et de droits.
 
Si le login et le mot de passe est bon et si le usr_adm_flg est égal à 2 il passe
sinon si le login et le mot de passe est bon, que le usr_adm_flg est égal à 1 et que l'utilisateur rentré est bien responsable de la filière il passe.
 
J'ai donc 2 tables :
Une table utilisateur :  
usr_id  usr_lgn  usr_pass  usr_form_flg  usr_adm_flg
1  test             test        1           1
2  guillaum    guilaum      0             0
3  antoine    antoine     1                 2
4  Fatih             fatih        0            1
 
Une table droits :  
droits_id  droits_user  droits_fil
1             1                1
2             4                2
 
 
 
Le résultat de la requete doit renvoyer 1 si la connexion est valide, 0 sinon
Mon but est que après avoir entré le mot de passe et le login ainsi que le nom de la filière à éditer (mais je renvoi le numéro) je puisse faire cette vérification. Comment faire ?
 
Merci


Message édité par antac le 12-12-2007 à 13:27:56
Reply

Marsh Posté le 12-12-2007 à 13:11:26   

Reply

Marsh Posté le 12-12-2007 à 13:30:24    

jointure, voir ce topic ou tout est expliqué: http://forum.hardware.fr/hfr/Progr [...] m#t1495691

Reply

Marsh Posté le 12-12-2007 à 13:43:18    

J'avais tenté ça :
SELECT count( usr_id ) AS verifexist
FROM utilisateurs, droits
WHERE usr_lgn = 'antoine'
AND usr_pass = 'antoine'
AND (
usr_adm_flg =2
OR (
usr_adm_flg =1
AND droits_user = (
SELECT usr_id
FROM utilisateurs
WHERE usr_lgn = 'antoine' )
AND droits_fil =1
)
)
AND droits.droits_user = utilisateurs.usr_id
 
 
mais ça ne marche pas, la requete renvoi invariablement 0 si l'utilisateur à un usr_adm_flg=2


Message édité par antac le 12-12-2007 à 15:14:58
Reply

Marsh Posté le 14-12-2007 à 14:01:38    

AND droits_user = (  
SELECT usr_id  
FROM utilisateurs  
WHERE usr_lgn = 'antoine' )  
 
 
=> Vire-ce morceau qui sert à rien et fout la merde.
=> Et préfixe correctement tes champs avec la table d'où ils proviennent, là c'est tout bonnement imbittable.
=> A part le sous-select foireux, je ne vois pas d'autre erreur, mais en réécrivant de façon lisible y'aura peut-être quelque chose qui sautera plus aux yeux.

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed