[MySQL] le même champs, 2 fois dans la même requête - résolu

le même champs, 2 fois dans la même requête - résolu [MySQL] - SQL/NoSQL - Programmation

Marsh Posté le 19-07-2002 à 20:44:09    

Désolé pour ce titre peu explicite, je m'explique:
 
Je suis en train de développer un forum (original  :D )
et pour ma requête qui affiche la liste des topics, je dois afficher le pseudo du créateur et le pseudo du dernier posteur
 
mais je craint de devoir faire en deux requêtes non ?
pas moyen d'optimiser en une seule requete ?


Message édité par THE REAL SMILEY le 20-07-2002 à 01:15:42

---------------
༼ つ ◕_◕ ༽つ
Reply

Marsh Posté le 19-07-2002 à 20:44:09   

Reply

Marsh Posté le 19-07-2002 à 20:52:38    

RELAX Sky a écrit a écrit :

ca proviens de 2 tables différentes ?




nan, le pseudo provient de la même table, c'est bien là le Pb :/


---------------
༼ つ ◕_◕ ༽つ
Reply

Marsh Posté le 19-07-2002 à 20:57:05    

RELAX Sky a écrit a écrit :

et bin ou est le pb ?
 
select champcreateur,champdernierposteur :??:




Bah non :/
 
Table du topic:
(...)
ID_CREATEUR=5
ID_DERNIER_POSTEUR=3
(..)
 
Table des pseudos:
ID_UTILISATEUR=5
PSEUDO="THE REAL SMILEY"
(...)
ID_UTILISATEUR=3
PSEUDO="Dudulle"
 
comment tu fais pour récupérer le pseudo du Créateur et du dernier posteur :??:


Message édité par THE REAL SMILEY le 19-07-2002 à 20:57:35

---------------
༼ つ ◕_◕ ༽つ
Reply

Marsh Posté le 19-07-2002 à 21:01:28    

RELAX Sky a écrit a écrit :

ca peu se faire a l'aide de jointures mais bon ca surcharge + que ca peu etre benefique
 
ce ke je te conseille (et ke je fais)
Table du topic:  
(...)  
ID_CREATEUR=5  
PSEUDO_CREATEUR="toto"
ID_DERNIER_POSTEUR=3  
PSEUDO_LASTUSR="titi"
(..)  
 
 
copie de données rulez, comme ca une requete simple, pas de jointure donc pas de surcharge ni de lock de tables
 
 




Mouais :/, cette idée m'a aussi traversé l'esprit, je crois que je vais l'appliquer aussi  ;)  
Thx


---------------
༼ つ ◕_◕ ༽つ
Reply

Marsh Posté le 19-07-2002 à 21:06:35    

c techniquement si mauvais ke ça les jointures ?
 
pke bon, moi j'optimise aussi sur le faite ke les tables soit dynamiques ou fixe, donc je sépare les données fixes aux données dynamiques et je joint kan j'en ai besoin ...

Reply

Marsh Posté le 19-07-2002 à 22:41:13    

ouais mais la en l'occurrence elle est toute petite la jointure ... franchement tu pourrais la faire

Reply

Marsh Posté le 19-07-2002 à 23:03:07    

THE REAL SMILEY a écrit a écrit :

 
Bah non :/
 
Table du topic:
(...)
ID_CREATEUR=5
ID_DERNIER_POSTEUR=3
(..)
 
Table des pseudos:
ID_UTILISATEUR=5
PSEUDO="THE REAL SMILEY"
(...)
ID_UTILISATEUR=3
PSEUDO="Dudulle"
 
comment tu fais pour récupérer le pseudo du Créateur et du dernier posteur :??:



Tu peux faire 2 jointures sur la même table :
 
SELECT user1.pseudo, user2.pseudo
FROM topic, pseudo AS user1, pseudo AS user2
WHERE topic.id_createur = user1.id_utilisateur
  AND topic.id_dernier_posteur = user2.id_utilisateur
 
Si tu as un index sur id_utilisateur de la table pseudo, ca devrait pas être trop gourmand.


Message édité par mrbebert le 19-07-2002 à 23:03:24
Reply

Marsh Posté le 20-07-2002 à 00:42:17    

mrbebert a écrit a écrit :

Tu peux faire 2 jointures sur la même table :
 
SELECT user1.pseudo, user2.pseudo
FROM topic, pseudo AS user1, pseudo AS user2
WHERE topic.id_createur = user1.id_utilisateur
  AND topic.id_dernier_posteur = user2.id_utilisateur
 
Si tu as un index sur id_utilisateur de la table pseudo, ca devrait pas être trop gourmand.




bien joué, j'y avais pas pensé :jap:  
c'est très bon ça, je teste tout de suite


---------------
༼ つ ◕_◕ ༽つ
Reply

Sujets relatifs:

Leave a Replay

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