Requête SELECT toute simple?

Requête SELECT toute simple? - SQL/NoSQL - Programmation

Marsh Posté le 28-06-2008 à 12:56:41    

Bonjour,
 
je cherche le moyen de faire une requête qui me convertisse un id en login qui est stocké dans une autre table.
 
Schéma (simplifié):
 
t_employe:
----------
id, login
 
-> id en auto_increment, et login contient un varchar
 
t_flottant:
---------
id, id_login, donnees
 
-> id en auto_increment, id_login = l'id de la table t_employe qui correspond au login (int), et donnees qui contient pleins de choses :)
 
Ma requête:  

Code :
  1. SELECT id_login,donnees FROM t_flottant GROUP BY id_login;


 
 
Je voudrais faire en sorte que cette requête affiche le login au lieu de l'id... c'est surement tout simple mais là je ne vois pas  :heink:  
 
Actuellement ça me sort ça:

Code :
  1. +-------------------+
  2. |id_login | donnees   |
  3. +-------------------+
  4. |    3     |  dfsfsdf  | 
  5. |    4     |  fdfdfsd  |
  6. +-------------------+


 
Alors que je voudrais ça:
 

Code :
  1. +---------------------+
  2. |id_login   | donnees    |
  3. +---------------------+
  4. |    toto   |  dfsfsdf   | 
  5. |    tata   |  fdfdfsd   |
  6. +---------------------+


 
Merci de votre aide!  :hello:  
 

Reply

Marsh Posté le 28-06-2008 à 12:56:41   

Reply

Marsh Posté le 28-06-2008 à 15:12:13    

Il faut que tu fasses une jointure dans ta requête, car la ta SELECT n'as accès qu'aux données d'une table.

Reply

Marsh Posté le 28-06-2008 à 18:59:26    

Merci, tu peux me donner un ptit exemple pour commencer ? ;)

Reply

Marsh Posté le 28-06-2008 à 20:02:30    

j'ai trouvé:
 

Code :
  1. select login,id_login,...
  2. from t_flottant, t_employe
  3. where t_employe.id = t_flottant.id_login
  4. group by ......


 
 :hello:

Reply

Marsh Posté le 01-07-2008 à 14:01:22    

Pour info cette syntaxe est trompeuse lorsque tu fais une jointure, utilise bien les opérateurs de jointure, car la il est "caché" dans le where.
 
Un jour tu vas mettre une clause en plus dans ton where , genre " and nombre_message > 100" et pour une raison ou une autre tu vas vouloir enlever le filtrage dans ta requete et supprimer totalement ton where.
Le problème, tu perds ta clause de jointure et tu retrouve avec une requete sur 2 tables, et là tu vas avoir un bon plantage du serveur mysql car il devra analyser nb enregistrement table 1 * nb enregistrement table 2 , et ça peut vite monter dans des chiffres astronomiques.
 
Je te propose donc une syntaxe beaucoup plus claire et beaucoup moins risquée.
 

Code :
  1. select login,id_login,...
  2. from t_flottant INNER JOIN t_employe
  3. ON t_employe.id = t_flottant.id_login
  4. group by ......


 
Et la si tu veux filtrer, tu peux rajouter un "WHERE", et sa suppression ne sera pas "dangereuse"
 
Voila, c'était juste pour info  :hello:  

Reply

Marsh Posté le 01-07-2008 à 20:34:01    

Ok super merci pour l'info ;) je ne suis pas trop un pro des requêtes "compliquées" ...
 
Est-ce que tu connais un site ou c'est BIEN expliqué ?  
 
:hello:

Reply

Sujets relatifs:

Leave a Replay

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