|
Publicité ' | ||||||||||||||||||||||||
|
|
#1 | ||||
|
Invité régulier
![]() Inscription : juillet 2002 Messages : 33 ![]() |
A l'aide Svp
je dois éclater ma seule base en 2 (bases) la 1ere pour les tables communes la 2eme pour les tables qui se cloturent chaque année J'ai 2 tables chacune dans une base comment dois-je écrire une jouture d'habitude j'écris de cette façon Code :
comme ceci (paradox) Code :
mais je l'ai pas essayer avec interbase Merci à tous Ada_B |
||||
|
|
00
|
|
|
#2 |
|
Membre émérite
![]() Développeur informatique Inscription : juin 2004 Messages : 699 ![]() |
Sauf erreur de ma part, Interbase n'admet pas les requêtes "multibase". Toutes les tables doivent être dans la même base. Désolé
Roland |
|
|
00
|
|
|
#3 |
|
Invité régulier
![]() Inscription : juillet 2002 Messages : 33 ![]() |
Merci bien pour la Réponse
si on peut pas joindre 2 tables a partir de base differente je dois penser autrement c'est vraiment désolant Ada_b |
|
|
00
|
|
|
#4 |
|
Membre confirmé
![]() Olivier MuetResponsable de service informatique Inscription : septembre 2003 Messages : 222 ![]() |
Au contraire, je crois qu'InterBase est l'un des rares SGBD-R du marché à autoriser les requêtes multi-bases.
Par contre, il va te falloir éplucher le forum ou la doc pour trouver comment procéder |
|
|
00
|
|
|
#5 | |
|
Inscrit
Inscription : mai 2004 Messages : 759 ![]() |
Citation:
j'aimerai bien savoir donc d'ou tu tient cette information ce serait important pour nous tous |
|
|
|
00
|
|
|
#6 | |
|
Membre Expert
![]() Frédéric Inscription : octobre 2002 Messages : 1 722 ![]() |
Citation:
Ou avez vous vu ca ?? Vous ne devez pas parler d'interbase je pense ni de firebird d'ailleur... |
|
|
|
00
|
|
|
#7 |
|
Membre confirmé
![]() Olivier MuetResponsable de service informatique Inscription : septembre 2003 Messages : 222 ![]() |
Alors, je vais peut-être vérifier un peu plus et je reviens... |
|
|
00
|
|
|
#8 |
|
Membre confirmé
![]() Olivier MuetResponsable de service informatique Inscription : septembre 2003 Messages : 222 ![]() |
Voici une fonction de l'API qui devrait éclairer un peu le débat :
Il faut l'utiliser pour ouvrir une transaction lors d'une opération multi-bases de données. Et hop |
|
|
00
|
|
|
#9 | |
|
Inscrit
Inscription : mai 2004 Messages : 759 ![]() |
Citation:
|
|
|
|
00
|
|
|
#10 | |
|
Membre Expert
![]() Frédéric Inscription : octobre 2002 Messages : 1 722 ![]() |
Citation:
Mais cette fonction n'est à utiliser que si votre langage de programmation ne permet pas l'appel de fonction avec un nombre de paramètre variable (comme le FORTRAN par exemple). Sinon la plus classique fonction isc_start_transaction de l'API permet de créer des transactions communes à plusieures bases de données (jusqu'à 16 bases). Mais celà n'est que la création d'une transaction commune à plusieures bases ce qui permet de commiter ou annuler toutes les actions dans toutes les bases. Mais celà ne permet pas il me semble de faire comme demandé ci dessus des requetes cross bases de données à moins que j'ai mal compris ce point. Mais dans ce cas quel est la syntaxe des requetes pour préciser si je m'adresse à la table personne de ma base 1 ou de ma base 2 ? Et si seul la transaction est importante lorsqu'on lance une requete pourquoi l'API réclame également le handle de le base à qui s'adresse la requete ? ? Pour moi ces deux fonctions permettent juste de créer une transaction communes à plusieures bases. Une fois créée, on lance des requetes s'adressant à une seule des bases mais à l'interieure de la transaction commune. Voilà mais encore une fois je le réécris, c'est ce que j'en ai compris, je n'ai pas eut l'occasion de le tester. Et si je me trompe je ne vois pas comment une fois cette transaction créée on pourrait exécuter des requetes avec des jointures de tables se trouvant dans des bases différentes car il y a deux problemes : - La syntaxe des requetes - L'appel de l'API d'exécution des requetes qui réclame en paramètre obligatoire l'handle de la base. Et donc lequel mettre ?? Pouquoi ce paramètre existe si seul la transaction suffit ? Bref deux mystères qui font que je crois que ce n'est pas possible. |
|
|
|
00
|
|
|
#11 | |||
|
Membre confirmé
![]() Olivier MuetResponsable de service informatique Inscription : septembre 2003 Messages : 222 ![]() |
Citation:
• Cependant, concernant le second je pense que tu as tord car, si tu as bien vu que isc_start_multiple s'adresse en effet aux langage de programmation qui ne peuvent utiliser les paramètres optionnels, c'est uniquement car le dernier paramètre est une structure d'information sur LES bases de données. On ne renseigne pas nécessairement 1 seul handle de base de données comme tu le dis, mais autant qu'on le souhaite ; il suffit pour cela de "tailler" le TEB comme on le souhaite et d'en indiquer le nombre à isc_start_multiple. Le commentaire ci-dessous est issu de la doc Interbase 6 mais très éclairant sur ce point (d'autant qu'il me semble bien qu'il aille dans mon sens Code :
|
|||
|
|
00
|
|
|
#12 |
|
Membre Expert
![]() Frédéric Inscription : octobre 2002 Messages : 1 722 ![]() |
Oui on est bien d'accord :
isc_start_transaction et isc_start_multiple permettent de démarrer une transaction sur plusieurs bases. Je n'ai jamais dit le contraire. La différence entre ces deux fonctions c'est que la première est utilisable par tous les languages acceptant les appel de fonction avec parametres optionnels alors que la seconde est à réserver aux autres languages de programmation. Pour ce faire il faut évidemment indiquer le ou les handles de la ou des bases sur lequel on va demarrer la transaction. Je n'ai jamais dit le contraire. Là ou vous ne m'avez pas compris c'est la suite. Une fois cette transaction multi-base ouverte, on va pouvoir executer des requetes pour celà on va continuer à utiliser l'API comme la fonction (pour faire simple) isc_dsql_exec_immed2() (qui a l'avantage d'éviter de devoir préparer la requete mais le probleme est le meme pour les autres fonctions). Cette fonction donc demande bien entendu le handle de la transaction que l'on a créé précédemment (donc pourquoi pas une transaction multi-bases), et elle demande également le handle de la base de données auquel il va appliquer l'ordre SQL. Et c'est donc sur ce paramètre (le handle de la base de données pour l'execution de la requete) que je vous demandai à quoi il sert ?? Et c'est ce qui me fait dire qu'une requete n'est applicable qu'a une et une seule base, même si la transaction est elle multi-base. Voilà relisez mes propos et comprenez bien que je nie pas qu'on puisse créer des transactions multi-bases mais je doute que l'on puisse adresser une requete à plusieurs bases puisqu'on est obligé de lui donner le handle de la base à laquel elle doit s'appliquer. Combiné au fait qu'il n'y a rien dans les donc concernant la syntaxe des éventuelles ordres SQL multi-bases, je me dit que ce n'est pas possible de faire des jointures multibases dans une requete tant bien même quelle est exécutée au sein d'une transaction multi-base. J'espère avoir été plus claire |
|
|
00
|
|
|
#13 |
|
Membre expérimenté
![]() Inscription : mars 2002 Messages : 711 ![]() |
je pense que cela dépend essentiellement du middleware que tu utilises :
- si tu utilises IBX, FIBPLus ou des composants d'accès natif d'interbase c'est impossible ! - si tu utilses le bon vieux bde, je crois que cela dois pouvoir se faire ! je crois même que tu peux faire des requêtes hétérogènes sur des SGDB différents ! |
|
|
00
|
|
|
#14 | |
|
Membre Expert
![]() Frédéric Inscription : octobre 2002 Messages : 1 722 ![]() |
Citation:
De plus celà veux dire que c'est BDE qui se tappe le boulot de décodage de la requete, appels des différents SGBD/tables impliquées puis rassemblement des données ce qui plutot lourd pour un simple middleware. Normalement c'est le boulot du serveur. De plus BDE est déprécié par Borland, ce qui veux dire qu'il est abandonné et plus maintenue, il n'est donc pas à utiliser dans le cadre d'un nouvelle application. |
|
|
|
00
|
|
|
#15 |
|
Membre Expert
![]() Frédéric Inscription : octobre 2002 Messages : 1 722 ![]() |
AHHHHHHHHHHHHHHHHHH MEACULPA
Donc non seulement on peut créer une transaction commune à plusieures bases (Ca je ne le niai pas) mais on peut bien exécuter des requetes multibases (jointures) (ce que je mettais en doute à cause des paramettres de l'API). En effet cette fonctionnalité est utilisable en "Embedded SQL" (mais pas autorisé cependant en "embedded DSQL". Et donc si c'est réalisable en embedded SQL c'est que l'API le permet également je suppose. Donc désolé pour avoir soutenu le contraire. Mais je ne pense pas que le BDE utilise quand même cette fonctionnalité car celui ci si j'ai bien compris le permet entre des SGBD différents et donc c'est bien une spécificité de BDE. |
|
|
00
|
|
|
#16 |
|
Inscrit
Inscription : mai 2004 Messages : 759 ![]() |
BONJOUR A TOUS
en definitive on peut dire que les requêtes multibases sont possibles avec interbase merci |
|
|
00
|
|
|
#17 |
|
Membre Expert
![]() Frédéric Inscription : octobre 2002 Messages : 1 722 ![]() |
Oui c'est possible en embedded SQL, utilisant GPRE.
Et donc je pense qu'avec des appels direct aux API celà doit également être possible. Par contre je ne vois pas comment le faire avec les IBX, j'ai l'impression que ce n'est pas possible avec eux. De même que je pense que BDE le permet peut être mais à mon avis pas en natif (celà reste à vérifier). Celà dit je ne sais pas comment ce type de requête est traité (sur le serveur ? sur le client ?) et ce que celà donne d'un point de vue performance. |
|
|
00
|
|
|
#18 |
|
Membre du Club
![]() |
Bonjour tout le monde,
heu... j'ai pas bien saisie ce que tu dis Barbibulle: "Oui c'est possible en embedded SQL, utilisant GPRE." c'est quoi GPRE ? j'utilise FlameRobin pour visualiser mes bases. Quelle autre interface je peux utiliser pour faire ce genre de requête ? Quelle est la syntaxe SQL pour faire cela ? je repose un peu les même questions, mais je n'ai pas trouvé de réponse clair... ![]() merci d'avance. |
|
|
00
|
|
|
#19 | |
|
Expert Confirmé
![]() ![]() ![]() Philippe MakowskiConsultant spécialité Firebird Inscription : mai 2002 Messages : 2 215 ![]() |
Citation:
mais pourquoi éclater la base ?
__________________
Philippe Makowski IBPhoenix - Firebird Membre de l'April |
|
|
00
|
|
|
#20 |
|
Invité de passage
![]() Inscription : août 2005 Messages : 7 ![]() |
Requete multibases sont donc impossibles avec Interbase?
Quid de Firebird? v1.5 / v2 |
|
|
00
|
Copyright © 2000-2012 - www.developpez.com