[MY_SQL] Problème avec une autojointure externe......

Problème avec une autojointure externe...... [MY_SQL] - Programmation

Marsh Posté le 08-11-2001 à 16:00:16    

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.....

Reply

Marsh Posté le 08-11-2001 à 16:00:16   

Reply

Marsh Posté le 08-11-2001 à 16:03:03    

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]

Reply

Marsh Posté le 08-11-2001 à 16:07:22    

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....

Reply

Marsh Posté le 08-11-2001 à 16:22:58    

T'as aussi deux fois la Même table :
 
TIME_SERIE as t1  
TIME_SERIE as t2
 
???

Reply

Marsh Posté le 08-11-2001 à 16:46:27    

ben oui ,c'est une auto jointure (une jointure sur la meme table) c'est pour ça que je mets des Alias de table....

Reply

Marsh Posté le 08-11-2001 à 17:01:11    

J'vais peut-être passer pour un c.. mais c'est quoi l'intérêt...
 
Merci.

Reply

Marsh Posté le 08-11-2001 à 17:23:41    

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 ;)

Reply

Marsh Posté le 08-11-2001 à 17:32:16    

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.

Reply

Marsh Posté le 08-11-2001 à 17:39:06    

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.

Reply

Sujets relatifs:

Leave a Replay

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