Zend FR

Consultez la FAQ sur le ZF avant de poster une question

Vous n'êtes pas identifié.

#1 13-01-2012 15:32:42

_Fuse_
Membre
Lieu: Aquitaine
Date d'inscription: 10-07-2008
Messages: 92

[resolu] requête sur plusieurs bases

Bonjour,

Je cherche la solution pour faire une requête sur plusieurs bases de données.

voici comment je procéde pour une simple requête
SQL

Code:

SELECT x 
FROM table1

ZEND

Code:

$table = $this->getDbTable(); //instancie un objet Zend_Db_Table_Abstract    
$select = $table->select();
        $select->from('table1',array('x'))
         ->setIntegrityCheck(false);

et maintenant ce que je voudrais obtenir c'est une requête de ce type :
SQL

Code:

SELECT x,y
FROM base1.table1, base2.table2

J'ai essayais de passer un tableau en premier argument à la fonction from(), sans succes. Ou peut être faut-il construire deux select()... je ne sais pas.
Comment faites-vous pour ce genre de problème?

Dernière modification par _Fuse_ (17-01-2012 08:54:32)

Hors ligne

 

#2 13-01-2012 16:47:06

f.garoby
Membre
Date d'inscription: 02-03-2011
Messages: 105

Re: [resolu] requête sur plusieurs bases

bonjour,
As-tu tout simplement essayé de passer "base1.table1" comme valeur à la fonction from() ?

Hors ligne

 

#3 13-01-2012 17:00:25

sekaijin
Membre
Date d'inscription: 17-08-2007
Messages: 1137

Re: [resolu] requête sur plusieurs bases

que non que non une connexion à ma connaissant de fait sur une et une seule base

et comme tout select dérive drirectement ou indirectement de
$databaseConexion->select();

même getDbTable()

je ne vois pas comment tu pourrait faire ça

de plus un select sur deux base suppose que la requête s'exécute sur deux serveur (à la rigueur sur un seul) dans le contexte de deux base qui s'ignore.

les outils qui permettent de faire ce genre de chose s'appuient soit sur un moteur de base de donnée capable de collaborer avec un autre de la même espèce et pour lesquels on a défini les règles de collaboration.

Soit c'est l'outil qui interroge les base qui interprète le SQL créé deux requêtes sur les deux serveur et ré agrège le tout lui même.

une connexion php est une connexion simple.
je n'ai pas souvenir que Zend ai ajouté cette capacité dans son code

A+JYT

Hors ligne

 

#4 16-01-2012 09:12:27

_Fuse_
Membre
Lieu: Aquitaine
Date d'inscription: 10-07-2008
Messages: 92

Re: [resolu] requête sur plusieurs bases

Bnojour,

Merci pour vos réponses.

@f.garoby, j'ai bien essayé de passer bas1.table1 dans le from il me semble que ça passé bien, par contre s tentant d'ajouter base2.table2 ça plantait. la fonction ne semble pas faite pour ça.
@sekaijin, les deux bases de données se trouvent sur le même serveur.

N'ayant pas trouvé de solutions efficaces je vais finalement faire autrement. Je vais donc dupliquer la table de base1 sur base2 et y ajouter un trigger. Cette table ne bouge pas beaucoup ça ne sera pas gourmand en ressources.
J'aurais pue faire deux requêtes séparées pour interroger les tables de la base1 et base2 mais le traitement du résultat en php par la suite est trop long pour ce que je veut en faire.

Dernière modification par _Fuse_ (16-01-2012 09:13:19)

Hors ligne

 

#5 16-01-2012 09:55:58

tdutrion
Administrateur
Lieu: Dijon, Paris, Edinburgh
Date d'inscription: 23-12-2009
Messages: 614
Site web

Re: [resolu] requête sur plusieurs bases

N'y a-t-il pas possibilité de créer une vue de la base1.table1 en base2.vue1 ?

Hors ligne

 

#6 16-01-2012 12:08:14

_Fuse_
Membre
Lieu: Aquitaine
Date d'inscription: 10-07-2008
Messages: 92

Re: [resolu] requête sur plusieurs bases

@Theocrite,  je te remercie.
Effectivement c'est bien mieux avec une vue. Jusqu'à présent je n'avais pas utilisé les vues dans mysql, c'est une erreur je me rend compte que pour certains cas que j'aurais pue les utiliser bien plus.
Il n'y a pas de problème pour créer une vue à partir d'une autre base (attention aux droits quand même). Du côté performances rien à dire c'est nikel (j'ai aussi utilisé la recherche "fulltext" et fais plusieurs jointures dans cette requête).
Donc pour moi c'est la bonne solution.
;-)

Hors ligne

 

#7 16-01-2012 12:13:17

tdutrion
Administrateur
Lieu: Dijon, Paris, Edinburgh
Date d'inscription: 23-12-2009
Messages: 614
Site web

Re: [resolu] requête sur plusieurs bases

Le seul problème de la vue reste les écritures, mais en général quand on tape dans différentes bases, on fait surtout de la consultation dans les bases tierces et l'écriture se fait sur la principale...

Hors ligne

 

#8 16-01-2012 15:48:49

f.garoby
Membre
Date d'inscription: 02-03-2011
Messages: 105

Re: [resolu] requête sur plusieurs bases

sekaijin a écrit:

que non que non une connexion à ma connaissant de fait sur une et une seule base

et comme tout select dérive drirectement ou indirectement de
$databaseConexion->select();

même getDbTable()

je ne vois pas comment tu pourrait faire ça

de plus un select sur deux base suppose que la requête s'exécute sur deux serveur (à la rigueur sur un seul) dans le contexte de deux base qui s'ignore.

les outils qui permettent de faire ce genre de chose s'appuient soit sur un moteur de base de donnée capable de collaborer avec un autre de la même espèce et pour lesquels on a défini les règles de collaboration.

Soit c'est l'outil qui interroge les base qui interprète le SQL créé deux requêtes sur les deux serveur et ré agrège le tout lui même.

une connexion php est une connexion simple.
je n'ai pas souvenir que Zend ai ajouté cette capacité dans son code

A+JYT

Oui, une connexion se fait sur une seule base, mais plusieurs SGBDR savent faire des jointures entre des tables de bases différentes (et même de moteurs différents), sans que cela nécessite une modification du SQL (par contre, il faut créer la connexion au serveur distant), donc ça aurait pu marcher...

Hors ligne

 

Pied de page des forums

Propulsé par PunBB
© Copyright 2002–2005 Rickard Andersson
Traduction par punbb.fr

Graphisme réalisé par l'agence Rodolphe Eveilleau
Développement par Kitpages