Problème avec une autojointure externe...... [MY_SQL] - Programmation
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]
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....
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
???
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....
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.
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
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.
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.
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.....