MySQL InnoDB et jointures multiples

MySQL InnoDB et jointures multiples - SQL/NoSQL - Programmation

Marsh Posté le 03-03-2009 à 19:08:25    

Bonjour!
 
J'ai un petit problème avec une jointure multiple sous MySQL :  
J'ai 2 tables :  

  • users_tbl (user_id, nom, ....)
  • passwords_tbl (fk-user_id, password)

fk-user_id est la clé étrangère de user_id.
 
Je voudrais récuperer le mot de passe du user 'xxx' :  

Code :
  1. SELECT password
  2. FROM users_tbl, passwords_tbl
  3. WHERE 'fk-user_id' = 'user_id' and nom = 'xxx';


La requete ne retourne aucun résultats (biensur je me suis assurer que le nom 'xxx' existe dans users_tbl et fait références a un password dans passwords_tbl)
A mon avis cela vient du fais que le moteur de la table est InnoDB. D'ou la question avec InnoDB la jointure fk-user_id = user_id n'est pas nécessaire?et même superflu?
 
Merci!

Reply

Marsh Posté le 03-03-2009 à 19:08:25   

Reply

Marsh Posté le 03-03-2009 à 19:57:14    

Code :
  1. SELECT password
  2. FROM users_tbl, passwords_tbl
  3. WHERE fk-user_id = user_id and nom = 'xxx';

Reply

Marsh Posté le 03-03-2009 à 20:08:06    

Merci couak!
 
mais je ne pense pas que le problème vient d'ici car si j'execute ta requete (donc sans les guillement à fk-user_id = user_id) ça me renvoie l'erreur suivante :  
Unknown column 'fk' in 'where clause'  
apparemment SQL n'aime pas trop les - (tirets)


Message édité par teeebo le 03-03-2009 à 20:09:19
Reply

Marsh Posté le 03-03-2009 à 20:14:01    

Je n'ai rien dit! J'ai changer fk-user_id en fk_user_id est là plus aucun problème!! Donc apparemment impossible de mettre un tiret dans l'attribut d'une table MySQL...?

Reply

Marsh Posté le 03-03-2009 à 20:18:39    

en même temps, le tiret fait partie de la panoplie d'opérateurs de tout sgbd, rien d'étonnant à ce que ça pète hein :o
essaie d'appeler un de tes champs "SELECT" par exemple, ça risque d'être marrant [:chrisbk]


---------------
J'ai un string dans l'array (Paris Hilton)
Reply

Sujets relatifs:

Leave a Replay

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