Précédent   Forum des professionnels en informatique > Bases de données > Firebird > SQL
SQL Forum d'entraide sur le SQL pour Firebird
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 01/12/2006, 09h56   #1
Candidat au titre de Membre du Club
 
Inscription : mai 2005
Messages : 34
Détails du profil
Informations forums :
Inscription : mai 2005
Messages : 34
Points : 11
Points : 11
Envoyer un message via Skype™ à olivier_nicollet
Par défaut Left Join et "no fetch current record"

Bonjour,

J'ai une requête comportant une jointure sur 4 tables et 4 left join. Je l'ai écrite sans soucis d'ordre dans un premier temps.

Code :
1
2
3
4
5
6
7
SELECT ...
FROM T1, T2, T3, T4
LEFT JOIN T5 ON T5.ID = T1.ID5
LEFT JOIN T6 ON T6.ID = T1.ID6
LEFT JOIN T7 ON T7.ID = T4.ID7
LEFT JOIN T8 ON T8.ID = T4.ID8
WHERE ...
Tout va bien (je suis sur interbase) jusqu'à la mise en production sur firebird.

le message d'erreur suivant "no fetch current record".

A force de test je me suis rendu compte que la requête sous cette forme ne provoquait pas l'erreur :

Code :
1
2
3
4
5
6
7
8
9
SELECT ...
FROM T1
LEFT JOIN T5 ON T5.ID = T1.ID5
LEFT JOIN T6 ON T6.ID = T1.ID6,
T4
LEFT JOIN T7 ON T7.ID = T4.ID7
LEFT JOIN T8 ON T8.ID = T4.ID8,
T2, T3
WHERE ...
Ma question donc, est-ce qu'il y a un ordre dans les left join ie. est-ce qu'il faut qu'il précèdent la table sur laquelle on fait la jointure.
Si oui pourquoi cela fonctionne sur Interbase.
Et que ce passe-t-il si on fait des jointures plus complexes par exemple avec un "and" dans le premier left join.

Enfin pour faire plus général est-ce que quesqu'un a plus d'information sur ce sujet.

Merci d'avance
olivier_nicollet est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 01/12/2006, 13h46   #2
Expert Confirmé

 
Homme Philippe Makowski
Consultant spécialité Firebird
Inscription : mai 2002
Messages : 2 215
Détails du profil
Informations personnelles :
Nom : Homme Philippe Makowski
Âge : 49
Localisation : France

Informations professionnelles :
Activité : Consultant spécialité Firebird
Secteur : Conseil

Informations forums :
Inscription : mai 2002
Messages : 2 215
Points : 3 318
Points : 3 318
tu es sûr de ce que tu nous as indiqué ?
ta table T3 se ballade toute seule ?
__________________
Philippe Makowski
IBPhoenix - Firebird
Membre de l'April
makowski est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 04/12/2006, 09h30   #3
Candidat au titre de Membre du Club
 
Inscription : mai 2005
Messages : 34
Détails du profil
Informations forums :
Inscription : mai 2005
Messages : 34
Points : 11
Points : 11
Envoyer un message via Skype™ à olivier_nicollet
Oui en fait il y a des jointures réalisées dans le "where"

Code :
1
2
3
WHERE T1.ID4 = T4.ID
AND T1.ID2 = T2.ID
AND T1.ID3 = T3.ID
Désolé du manque de précision
olivier_nicollet est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 04/12/2006, 20h25   #4
Expert Confirmé

 
Homme Philippe Makowski
Consultant spécialité Firebird
Inscription : mai 2002
Messages : 2 215
Détails du profil
Informations personnelles :
Nom : Homme Philippe Makowski
Âge : 49
Localisation : France

Informations professionnelles :
Activité : Consultant spécialité Firebird
Secteur : Conseil

Informations forums :
Inscription : mai 2002
Messages : 2 215
Points : 3 318
Points : 3 318
désolé de te contredire mais :
Code :
1
2
3
4
5
6
7
8
9
SELECT T1.ID
FROM T1, T2, T3, T4
LEFT JOIN T5 ON T5.ID = T1.ID5
LEFT JOIN T6 ON T6.ID = T1.ID6
LEFT JOIN T7 ON T7.ID = T4.ID7
LEFT JOIN T8 ON T8.ID = T4.ID8
WHERE T1.ID4 = T4.ID
AND T1.ID2 = T2.ID
AND T1.ID3 = T3.ID
fonctionne très bien que ce soit sous FB 1.5 ou FB2.0
__________________
Philippe Makowski
IBPhoenix - Firebird
Membre de l'April
makowski est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 05/12/2006, 10h21   #5
Candidat au titre de Membre du Club
 
Inscription : mai 2005
Messages : 34
Détails du profil
Informations forums :
Inscription : mai 2005
Messages : 34
Points : 11
Points : 11
Envoyer un message via Skype™ à olivier_nicollet
Oui effectivement ça fonctionne. Bon j'ai voulu être plus clair en remplaçant le nom de tables alors je copie la requête telle quelle est dans notre base avec les vrai nom et là j'ai bien l'erreur

Code :
1
2
3
4
5
6
7
8
9
SELECT c.IDcompte
FROM Tcompte c, Tbanque b, Tragence a, Tsociete s 
LEFT JOIN Trcontact h ON h.idagence = c.idagence AND h.fcontactpivot = 1
LEFT JOIN Tpays p ON s.IDpays = p.IDpays
LEFT JOIN Tdevise d ON c.Iddevise=d.idDevise
LEFT JOIN VRLISTE_FR lfr ON lfr.idlibelle=s.idforme_juridique
WHERE c.IDbanque = b.IDbanque 
AND c.IDsociete = s.IDsociete 
AND a.idagence = c.idagence
olivier_nicollet est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 05/12/2006, 10h31   #6
Expert Confirmé

 
Homme Philippe Makowski
Consultant spécialité Firebird
Inscription : mai 2002
Messages : 2 215
Détails du profil
Informations personnelles :
Nom : Homme Philippe Makowski
Âge : 49
Localisation : France

Informations professionnelles :
Activité : Consultant spécialité Firebird
Secteur : Conseil

Informations forums :
Inscription : mai 2002
Messages : 2 215
Points : 3 318
Points : 3 318
et bien essaie avec autre chose que ton antique outil pas forcément complètement compatible Firebird
commence par isql de firebird puis Flamerobin ou Ibexpert, ou tout autre outil de ton choix
__________________
Philippe Makowski
IBPhoenix - Firebird
Membre de l'April
makowski est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 05/12/2006, 13h20   #7
Candidat au titre de Membre du Club
 
Inscription : mai 2005
Messages : 34
Détails du profil
Informations forums :
Inscription : mai 2005
Messages : 34
Points : 11
Points : 11
Envoyer un message via Skype™ à olivier_nicollet
J'ai exécuté cette requête avec IBConsole, mais l'erreur reste la même quand elle est exécutée par notre application (développée avec XMLRAD) ou avec ISQL.

olivier_nicollet est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 05/12/2006, 14h08   #8
Expert Confirmé

 
Homme Philippe Makowski
Consultant spécialité Firebird
Inscription : mai 2002
Messages : 2 215
Détails du profil
Informations personnelles :
Nom : Homme Philippe Makowski
Âge : 49
Localisation : France

Informations professionnelles :
Activité : Consultant spécialité Firebird
Secteur : Conseil

Informations forums :
Inscription : mai 2002
Messages : 2 215
Points : 3 318
Points : 3 318
il y a qq chose d'autre, ce n'est pas syntaxe qui fait ça
si necessaire contacte moi en privé pour faire un test avec ta base
il y avait un bug comme ça mais dans la version Alpha5 de Firebird 1.5
et cela a été corrigé depuis
__________________
Philippe Makowski
IBPhoenix - Firebird
Membre de l'April
makowski est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 18h49.


 
 
 
 
Partenaires

Hébergement Web