Précédent   Forum des professionnels en informatique > Bases de données > Autres SGBD > InterBase
InterBase Forum d'entraide sur le SGBD InterBase de Codegear. Avant de poster -> F.A.Q Interbase, Tutoriels
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/09/2004, 17h05   #1
Invité régulier
 
Inscription : juillet 2002
Messages : 33
Détails du profil
Informations forums :
Inscription : juillet 2002
Messages : 33
Points : 6
Points : 6
Par défaut Jointure de table avec Interbase

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 :
1
2
3
     SELECT  *   FROM  table1  TB1
     LEFT OUTER JOIN  table2 TB2 
      ON  (TB1.NUM=TB2.NUM)
normalement je dois ajouter les alias
comme ceci (paradox)

Code :
1
2
3
     SELECT  *   FROM  :ALIAS1:table1  TB1
     LEFT OUTER JOIN  :ALIAS2:table2 TB2 
      ON  (TB1.NUM=TB2.NUM)

mais je l'ai pas essayer avec interbase
Merci à tous
Ada_B
ada_b est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 02/09/2004, 11h01   #2
rsc
Membre émérite
 
Avatar de rsc
 
Homme
Développeur informatique
Inscription : juin 2004
Messages : 699
Détails du profil
Informations personnelles :
Sexe : Homme
Âge : 61
Localisation : France, Côte d'Or (Bourgogne)

Informations professionnelles :
Activité : Développeur informatique
Secteur : High Tech - Éditeur de logiciels

Informations forums :
Inscription : juin 2004
Messages : 699
Points : 874
Points : 874
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
rsc est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 02/09/2004, 18h29   #3
Invité régulier
 
Inscription : juillet 2002
Messages : 33
Détails du profil
Informations forums :
Inscription : juillet 2002
Messages : 33
Points : 6
Points : 6
Par défaut mm Sujet

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
ada_b est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 03/09/2004, 16h41   #4
Membre confirmé
 
Avatar de TMuet
 
Homme Olivier Muet
Responsable de service informatique
Inscription : septembre 2003
Messages : 222
Détails du profil
Informations personnelles :
Nom : Homme Olivier Muet
Localisation : France

Informations professionnelles :
Activité : Responsable de service informatique
Secteur : High Tech - Multimédia et Internet

Informations forums :
Inscription : septembre 2003
Messages : 222
Points : 254
Points : 254
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
TMuet est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 03/09/2004, 16h49   #5
Inscrit
 
Inscription : mai 2004
Messages : 759
Détails du profil
Informations forums :
Inscription : mai 2004
Messages : 759
Points : 288
Points : 288
Citation:
Au contraire, je crois qu'InterBase est l'un des rares SGBD-R du marché à autoriser les requêtes multi-bases.
ca c'est une info qui m'interresse : en effet avec la doc que j'ai lu jusqu'a présent et aussi les reponses de ce forums ja sais que interbase n'autorise pas de requête multibases en tout cas pas Ib6
j'aimerai bien savoir donc d'ou tu tient cette information
ce serait important pour nous tous
devalender est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 03/09/2004, 16h51   #6
Membre Expert
 
Avatar de Barbibulle
 
Frédéric
Inscription : octobre 2002
Messages : 1 722
Détails du profil
Informations personnelles :
Nom : Frédéric
Âge : 42

Informations forums :
Inscription : octobre 2002
Messages : 1 722
Points : 2 025
Points : 2 025
Citation:
Envoyé par TMuet
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

Ou avez vous vu ca ?? :

Vous ne devez pas parler d'interbase je pense ni de firebird d'ailleur...
Barbibulle est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 03/09/2004, 17h18   #7
Membre confirmé
 
Avatar de TMuet
 
Homme Olivier Muet
Responsable de service informatique
Inscription : septembre 2003
Messages : 222
Détails du profil
Informations personnelles :
Nom : Homme Olivier Muet
Localisation : France

Informations professionnelles :
Activité : Responsable de service informatique
Secteur : High Tech - Multimédia et Internet

Informations forums :
Inscription : septembre 2003
Messages : 222
Points : 254
Points : 254


Alors, je vais peut-être vérifier un peu plus et je reviens...
TMuet est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 28/09/2004, 12h58   #8
Membre confirmé
 
Avatar de TMuet
 
Homme Olivier Muet
Responsable de service informatique
Inscription : septembre 2003
Messages : 222
Détails du profil
Informations personnelles :
Nom : Homme Olivier Muet
Localisation : France

Informations professionnelles :
Activité : Responsable de service informatique
Secteur : High Tech - Multimédia et Internet

Informations forums :
Inscription : septembre 2003
Messages : 222
Points : 254
Points : 254
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
TMuet est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 28/09/2004, 14h55   #9
Inscrit
 
Inscription : mai 2004
Messages : 759
Détails du profil
Informations forums :
Inscription : mai 2004
Messages : 759
Points : 288
Points : 288
Citation:
Voici une fonction de l'API qui devrait éclairer un peu le débat :
Code:
isc_start_multiple
as tu vraiment testé cette fonction
devalender est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 28/09/2004, 18h46   #10
Membre Expert
 
Avatar de Barbibulle
 
Frédéric
Inscription : octobre 2002
Messages : 1 722
Détails du profil
Informations personnelles :
Nom : Frédéric
Âge : 42

Informations forums :
Inscription : octobre 2002
Messages : 1 722
Points : 2 025
Points : 2 025
Citation:
Envoyé par TMuet
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
En effet, cette fonction de l'API (donc non accessible en SQL) permet de créer une transaction commune à plusieures bases de données.

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.
Barbibulle est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 29/09/2004, 13h17   #11
Membre confirmé
 
Avatar de TMuet
 
Homme Olivier Muet
Responsable de service informatique
Inscription : septembre 2003
Messages : 222
Détails du profil
Informations personnelles :
Nom : Homme Olivier Muet
Localisation : France

Informations professionnelles :
Activité : Responsable de service informatique
Secteur : High Tech - Multimédia et Internet

Informations forums :
Inscription : septembre 2003
Messages : 222
Points : 254
Points : 254
Citation:
Envoyé par Barbibulle
- 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 ?
• Concernant le premier point, je dois bien admettre mon ignorance la plus absolue

• 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 :
1
2
3
4
5
6
7
A single transaction can access multiple DATABASES. This FUNCTION passes information
about each DATABASE it accesses AND the conditions of access FOR that DATABASE IN a
transaction parameter buffer (TPB). The TPB IS a variably-sized vector of bytes declared
AND populated BY the program. It contains information describing intended transaction
behavior such AS its access AND LOCK modes.
isc_start_transaction() can start a transaction against up TO 16 DATABASES. You must pass
a DATABASE handle AND a TPB FOR each referenced DATABASE.
TMuet est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 29/09/2004, 14h51   #12
Membre Expert
 
Avatar de Barbibulle
 
Frédéric
Inscription : octobre 2002
Messages : 1 722
Détails du profil
Informations personnelles :
Nom : Frédéric
Âge : 42

Informations forums :
Inscription : octobre 2002
Messages : 1 722
Points : 2 025
Points : 2 025
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
Barbibulle est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 26/11/2004, 17h30   #13
Membre expérimenté
 
Inscription : mars 2002
Messages : 711
Détails du profil
Informations forums :
Inscription : mars 2002
Messages : 711
Points : 599
Points : 599
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 !
VLDG est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 26/11/2004, 17h56   #14
Membre Expert
 
Avatar de Barbibulle
 
Frédéric
Inscription : octobre 2002
Messages : 1 722
Détails du profil
Informations personnelles :
Nom : Frédéric
Âge : 42

Informations forums :
Inscription : octobre 2002
Messages : 1 722
Points : 2 025
Points : 2 025
Citation:
Envoyé par VLDG
je pense que cela dépend essentiellement du middleware que tu utilises :
- 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 !
Peut etre mais certainement pas dans la même transaction !
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.
Barbibulle est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 01/12/2004, 11h09   #15
Membre Expert
 
Avatar de Barbibulle
 
Frédéric
Inscription : octobre 2002
Messages : 1 722
Détails du profil
Informations personnelles :
Nom : Frédéric
Âge : 42

Informations forums :
Inscription : octobre 2002
Messages : 1 722
Points : 2 025
Points : 2 025
AHHHHHHHHHHHHHHHHHH MEACULPA je viens de découvrir qu'à priori c'est possible.

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.
Barbibulle est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 04/12/2004, 14h40   #16
Inscrit
 
Inscription : mai 2004
Messages : 759
Détails du profil
Informations forums :
Inscription : mai 2004
Messages : 759
Points : 288
Points : 288
BONJOUR A TOUS
en definitive on peut dire que les requêtes multibases sont possibles avec interbase :
merci
devalender est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 06/12/2004, 10h29   #17
Membre Expert
 
Avatar de Barbibulle
 
Frédéric
Inscription : octobre 2002
Messages : 1 722
Détails du profil
Informations personnelles :
Nom : Frédéric
Âge : 42

Informations forums :
Inscription : octobre 2002
Messages : 1 722
Points : 2 025
Points : 2 025
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.
Barbibulle est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 23/06/2009, 18h45   #18
dug
Membre du Club
 
Inscription : mai 2002
Messages : 151
Détails du profil
Informations forums :
Inscription : mai 2002
Messages : 151
Points : 50
Points : 50
Envoyer un message via ICQ à dug Envoyer un message via MSN à dug
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.
dug est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 24/06/2009, 11h23   #19
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
Citation:
Envoyé par ada_b Voir le message
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

select * from table1 TB1
left OUTER JOIN table2 TB2
on (TB1.NUM=TB2.NUM)

normalement je dois ajouter les alias
comme ceci (paradox)

select * from :ALIAS1:table1 TB1
left OUTER JOIN :ALIAS2:table2 TB2
on (TB1.NUM=TB2.NUM)



mais je l'ai pas essayer avec interbase
Merci à tous
Ada_B
impossible avec Interbase
mais pourquoi éclater la base ?
__________________
Philippe Makowski
IBPhoenix - Firebird
Membre de l'April
makowski est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 12/05/2010, 02h23   #20
Invité de passage
 
Inscription : août 2005
Messages : 7
Détails du profil
Informations forums :
Inscription : août 2005
Messages : 7
Points : 4
Points : 4
Par défaut Requete multibases - Interbase / Firebird

Requete multibases sont donc impossibles avec Interbase?

Quid de Firebird? v1.5 / v2
Fabio2000 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 04h14.


 
 
 
 
Partenaires

Hébergement Web