Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
3556 connectés 

 


Dernière réponse
Sujet : [MY_SQL] Problème avec une autojointure externe......
FLY LM

irulan a écrit a écrit :

fly LM > le mieux c'est d'avoir un exemple :
Tu as une table EMPLOYES :
EMP_ID
NOM
PRENOM
EMP_SUPERIEUR_ID
 
EMP_ID = identifiant unique de chaque employé
EMP_SUPERIEUR_ID = identifiant du supérieur de chaque employé (qui contient donc des valeurs prises dans EMP_ID, puisqu'un supérieur est lui-même un employé)
 
Si tu veux avoir en face du nom et prénom de chaque employé le nom et prénom de son supérieur, tu feras :
 
SELECT emp1.NOM,emp1.PRENOM,emp2.NOM,emp2.PRENOM
from EMPLOYES emp1, EMPLOYES emp2
where emp1.EMP_SUPERIEUR_ID = emp2.ID;
 
En gros, tu as souvent besoin d'une auto-jointure quand tu utilises une table qui fait référence à elle-même...
 
Merci de corriger si il y a des erreurs, ou d'ajouter des précisions si nécessaire ;)  




 
Ah yes, y-a pas photos... J'ai compris MERCI.


Votre réponse
Nom d'utilisateur    Pour poster, vous devez être inscrit sur ce forum .... si ce n'est pas le cas, cliquez ici !
Le ton de votre message                        
                       
Votre réponse


[b][i][u][strike][spoiler][fixed][cpp][url][email][img][*]   
 
   [quote]
 

Options

 
Vous avez perdu votre mot de passe ?


Vue Rapide de la discussion
FLY LM

irulan a écrit a écrit :

fly LM > le mieux c'est d'avoir un exemple :
Tu as une table EMPLOYES :
EMP_ID
NOM
PRENOM
EMP_SUPERIEUR_ID
 
EMP_ID = identifiant unique de chaque employé
EMP_SUPERIEUR_ID = identifiant du supérieur de chaque employé (qui contient donc des valeurs prises dans EMP_ID, puisqu'un supérieur est lui-même un employé)
 
Si tu veux avoir en face du nom et prénom de chaque employé le nom et prénom de son supérieur, tu feras :
 
SELECT emp1.NOM,emp1.PRENOM,emp2.NOM,emp2.PRENOM
from EMPLOYES emp1, EMPLOYES emp2
where emp1.EMP_SUPERIEUR_ID = emp2.ID;
 
En gros, tu as souvent besoin d'une auto-jointure quand tu utilises une table qui fait référence à elle-même...
 
Merci de corriger si il y a des erreurs, ou d'ajouter des précisions si nécessaire ;)  




 
Ah yes, y-a pas photos... J'ai compris MERCI.

Woof ben voilà, c'est pas plus compliqué qu'une jointure sauf qu' au lieu de 2 tables tu as les 2 alias d'une meme table.
irulan fly LM > le mieux c'est d'avoir un exemple :
Tu as une table EMPLOYES :
EMP_ID
NOM
PRENOM
EMP_SUPERIEUR_ID
 
EMP_ID = identifiant unique de chaque employé
EMP_SUPERIEUR_ID = identifiant du supérieur de chaque employé (qui contient donc des valeurs prises dans EMP_ID, puisqu'un supérieur est lui-même un employé)
 
Si tu veux avoir en face du nom et prénom de chaque employé le nom et prénom de son supérieur, tu feras :
 
SELECT emp1.NOM,emp1.PRENOM,emp2.NOM,emp2.PRENOM
from EMPLOYES emp1, EMPLOYES emp2
where emp1.EMP_SUPERIEUR_ID = emp2.ID;
 
En gros, tu as souvent besoin d'une auto-jointure quand tu utilises une table qui fait référence à elle-même...
 
Merci de corriger si il y a des erreurs, ou d'ajouter des précisions si nécessaire ;)
FLY LM J'vais peut-être passer pour un c.. mais c'est quoi l'intérêt...
 
Merci.
Woof ben oui ,c'est une auto jointure (une jointure sur la meme table) c'est pour ça que je mets des Alias de table....
FLY LM T'as aussi deux fois la Même table :
 
TIME_SERIE as t1  
TIME_SERIE as t2
 
???
Woof pas de rapport celle que j'ai collé la haut est celle sous SQL (qui marche) et sous Mysql j'ai vérifié parenthèse, casse....
FLY LM select t1.Date, t1.value,t2.value from TIME_SERIE as t1 left join TIME_SERIE as t2 on ((t1.Date=t2.Date) and  (t2.ID_Product=494)and (t1.ID_Field=t2.ID_Field)) where    ( (t1.ID_Field='YLD_BID')   and (t1.ID_Product=156)  ) ORDER BY t1.Date  
 
Ton AND est collé a une parenthèse ... Peut-être pas de rapport, à voir..

 

[edtdd]--Message édité par fly LM--[/edtdd]

Woof voilà, j'ai une table time_serie dans laquelle j'ai les colonnes value, Date, ID_Product et ID_YIELD....
Voici ma requete mysql:
select t1.Date, t1.value,t2.value from TIME_SERIE as t1 left join TIME_SERIE as t2 on ((t1.Date=t2.Date) and  (t2.ID_Product=494)and (t1.ID_Field=t2.ID_Field)) where    ( (t1.ID_Field='YLD_BID')   and (t1.ID_Product=156)  ) ORDER BY t1.Date
et lorsque je la lance, le serveur mysql ne fait rien, comme si il était en train de faire je sais pas quoi....
 
je précise que la requete marche sous SQL Server avec la meme base.....
 
j'ai plus trop d'idée.... si quelqu'un en a une.....

Copyright © 1997-2025 Groupe LDLC (Signaler un contenu illicite / Données personnelles)