Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
3035 connectés 

  FORUM HardWare.fr
  Programmation
  SQL/NoSQL

  [Mysql][PDO] Comment faire un SELECT sur 2 bases ?

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

[Mysql][PDO] Comment faire un SELECT sur 2 bases ?

n°1828524
getget
Il y en a qui ont essayé ...
Posté le 17-12-2008 à 15:15:42  profilanswer
 

Bonjour, je cherche à faire un SELECT sur 2 bases (sur le même serveur).
Sans PDO, c'est facile : SELECT * FROM db1.table1, db2.table2 et zou !
 
Avec PDO, je ne vois pas trop comment faire :/


---------------
Gamertag : Getget94 - PSN : Getget1980 - Nintendo Network : Getget1980 - Uplau : Getget1980
mood
Publicité
Posté le 17-12-2008 à 15:15:42  profilanswer
 

n°1828536
Profil sup​primé
Posté le 17-12-2008 à 15:26:32  answer
 

http://fr.php.net/pdo
 
Et dans les commentaires :
 

Citation :

It doesn't seem at this time that there's a practical solution (besides creating multiple PDO objects and therefore DB connections) to accessing and switching between multiple databases -- as with the mysql_select_db function.


Message édité par Profil supprimé le 17-12-2008 à 15:26:50
n°1828555
getget
Il y en a qui ont essayé ...
Posté le 17-12-2008 à 15:37:16  profilanswer
 

Ca ne me dérangerai pas de gérer plusieurs connexions (j'en ait déja une vers chaque base), mais je vois mal comment les utiliser .... (je suis une brèle en POO par ailleurs).

 

Actuellement, je fais ($dbh est ma 1ere connex, $dbh_vt la 2eme)

 

$sql="SELECT * FROM blabla WHERE truc=:truc";
$stmt=$dbh->prepare($sql);
$data=array(":truc'=>$machin);
$stmt->execute($data);
while ....

 

Je vois mal comment construire la requête pour qu'elle porte sur les 2 bases (même en utilisant 2 connexions)


Message édité par getget le 17-12-2008 à 15:49:01

---------------
Gamertag : Getget94 - PSN : Getget1980 - Nintendo Network : Getget1980 - Uplau : Getget1980
n°1828560
Profil sup​primé
Posté le 17-12-2008 à 15:38:33  answer
 

attention : deux tables ou deux bases : c'est complètement différent ;)

n°1828566
skeye
Posté le 17-12-2008 à 15:41:27  profilanswer
 

stadire qu'une seule requête sur deux bases c'est mauvais signe pour le design de ton truc, déjà ...[:petrus75]


---------------
Can't buy what I want because it's free -
n°1828589
getget
Il y en a qui ont essayé ...
Posté le 17-12-2008 à 15:51:30  profilanswer
 

2 bases ;)
 
Je me connecte en tant que client sur une base sur laquelle je retrouve l'emploi du temps de mes etudiants (et là, j'ai pas le choix, ca dépend du logiciel d'EDT).
En parallèle de ca, j'ai une autre base dans laquelle j'enregistre des absences (qui dépendent de séances que je trouve dans la base de l'EDT) ...


---------------
Gamertag : Getget94 - PSN : Getget1980 - Nintendo Network : Getget1980 - Uplau : Getget1980
n°1828597
skeye
Posté le 17-12-2008 à 15:55:23  profilanswer
 

getget a écrit :

2 bases ;)
 
Je me connecte en tant que client sur une base sur laquelle je retrouve l'emploi du temps de mes etudiants (et là, j'ai pas le choix, ca dépend du logiciel d'EDT).
En parallèle de ca, j'ai une autre base dans laquelle j'enregistre des absences (qui dépendent de séances que je trouve dans la base de l'EDT) ...


 
question con : pourquoi tu n'ajoutes pas tout simplement des tables dans la base existante, genre en les préfixant d'un truc spécifique? [:petrus dei]


---------------
Can't buy what I want because it's free -
n°1828618
getget
Il y en a qui ont essayé ...
Posté le 17-12-2008 à 16:06:09  profilanswer
 

J'ai pas acces en écriture  :ange:


Message édité par getget le 17-12-2008 à 16:06:27

---------------
Gamertag : Getget94 - PSN : Getget1980 - Nintendo Network : Getget1980 - Uplau : Getget1980
n°1828624
skeye
Posté le 17-12-2008 à 16:09:02  profilanswer
 

ça pue le piratage d'un accès sql ça.[:petrus75]
J'ai bien peur qu'on ne soit pas censés aider, dans ce cas.[:petrus75]


---------------
Can't buy what I want because it's free -
n°1828643
getget
Il y en a qui ont essayé ...
Posté le 17-12-2008 à 16:31:01  profilanswer
 

Aucun piratage, j'ai accès en lecture à une base, via un User spécifique, base qui est commune à tout l'IUT.

 

D'un autre coté, j'ai l'espace web de mon département, avec sa propre base (et un autre user), sur laquelle j'ai tous les droits.

 

Je ne peux pas faire mieux comme "preuve" que ca : (yaplus :D), hébergé sur le site duquel je suis en train de m'occuper ;)


Message édité par getget le 17-12-2008 à 16:48:52

---------------
Gamertag : Getget94 - PSN : Getget1980 - Nintendo Network : Getget1980 - Uplau : Getget1980
mood
Publicité
Posté le 17-12-2008 à 16:31:01  profilanswer
 

n°1828644
skeye
Posté le 17-12-2008 à 16:31:44  profilanswer
 

Bon, c'est le même serveur mysql, au moins?[:petrus dei]


---------------
Can't buy what I want because it's free -
n°1828647
getget
Il y en a qui ont essayé ...
Posté le 17-12-2008 à 16:43:50  profilanswer
 

Yep, et j'ai déja 2 connexions vers les 2 bases (et individuellement, j'accède à chaque base sans soucis)


---------------
Gamertag : Getget94 - PSN : Getget1980 - Nintendo Network : Getget1980 - Uplau : Getget1980
n°1828654
skeye
Posté le 17-12-2008 à 16:57:21  profilanswer
 

getget a écrit :

Yep, et j'ai déja 2 connexions vers les 2 bases (et individuellement, j'accède à chaque base sans soucis)


il faudrait utiliser le même utilisateur, je pense...et il y a une syntaxe pour faire ça, après, avec mysql - si je me souviens bien c'est un truc du genre :

 

select *
from base1.toto join base2.tata on toto.tata_id = tata.id


Message édité par skeye le 17-12-2008 à 16:57:35

---------------
Can't buy what I want because it's free -
n°1828660
getget
Il y en a qui ont essayé ...
Posté le 17-12-2008 à 17:05:53  profilanswer
 

Ca y'a aucun soucis, avec mysql ou mysqli  je sais faire (tu ouvres 2 connexions et "SELECT * FROM db1.Table1, db2.Table2 .." ), mais avec PDO, je vois pas comment faire :/


---------------
Gamertag : Getget94 - PSN : Getget1980 - Nintendo Network : Getget1980 - Uplau : Getget1980
n°1828662
skeye
Posté le 17-12-2008 à 17:10:32  profilanswer
 

getget a écrit :

Ca y'a aucun soucis, avec mysql ou mysqli  je sais faire (tu ouvres 2 connexions et "SELECT * FROM db1.Table1, db2.Table2 .." ), mais avec PDO, je vois pas comment faire :/


Pourquoi deux connections? Une seule devrait suffire, si c'est le même serveur. [:pingouino]
Donc je vois pas pourquoi ça poserait problème avec PDO...? :??:


Message édité par skeye le 17-12-2008 à 17:10:36

---------------
Can't buy what I want because it's free -
n°1828663
getget
Il y en a qui ont essayé ...
Posté le 17-12-2008 à 17:15:55  profilanswer
 

Ben quand tu crées ta connection, tu dois selectionner une base non  :pt1cable:


Message édité par getget le 17-12-2008 à 17:16:17

---------------
Gamertag : Getget94 - PSN : Getget1980 - Nintendo Network : Getget1980 - Uplau : Getget1980
n°1828664
skeye
Posté le 17-12-2008 à 17:17:03  profilanswer
 

selectionner une base avec mysql c'est juste choisir pour quelle base tu vas avoir un raccourci, ça t'empêche pas d'interroger les autres aussi si ton utilisateur a les droits, non?:o


---------------
Can't buy what I want because it's free -
n°1828670
getget
Il y en a qui ont essayé ...
Posté le 17-12-2008 à 17:20:25  profilanswer
 

Ouais mais moi j'ai 2 utilisateurs différents :D

 

Edith : même sur ma DB de test ou c'est le même user pour les 2 bases, ca marche po :/

 

Si j'ai un $dbh qui est ouvert vers la base "gmp", je peux pas faire une requête vers la base "vt" :/

Message cité 1 fois
Message édité par getget le 17-12-2008 à 17:22:14

---------------
Gamertag : Getget94 - PSN : Getget1980 - Nintendo Network : Getget1980 - Uplau : Getget1980
n°1828673
skeye
Posté le 17-12-2008 à 17:21:29  profilanswer
 

essaye en ligne de commande, tu verras : tu peux très bien faire un truc de ce style :
 
use toto;
select * from titi.tutu;


---------------
Can't buy what I want because it's free -
n°1828675
skeye
Posté le 17-12-2008 à 17:22:09  profilanswer
 

getget a écrit :

Ouais mais moi j'ai 2 utilisateurs différents :D


Et la base de ton appli à toi est pas visible par celui qui a le droit de lire l'autre?[:moule_bite]


---------------
Can't buy what I want because it's free -
n°1828677
skeye
Posté le 17-12-2008 à 17:23:06  profilanswer
 

(genre ce serait une bonne idée d'en faire le propriétaire? :o )


Message édité par skeye le 17-12-2008 à 17:23:12

---------------
Can't buy what I want because it's free -
n°1828682
getget
Il y en a qui ont essayé ...
Posté le 17-12-2008 à 17:28:25  profilanswer
 

C'est l'admin réseau de l'IUT qui gère les droits, je peux pas trop faire ce que je veux ;)
 
Ma seule difficulté, c'est de trouver comment écrire une requête qui va utiliser les 2 connexions en notation "objet" :/
 


---------------
Gamertag : Getget94 - PSN : Getget1980 - Nintendo Network : Getget1980 - Uplau : Getget1980
n°1828691
skeye
Posté le 17-12-2008 à 17:33:52  profilanswer
 

l'admin réseau qui gère les droits de la db?[:pingouino]
 
Ta difficulté ne peut pas être résolue, ça n'a strictement aucun sens. Pour faire ça il te faut un utilisateur qui peut lire les deux bases à la fois.


---------------
Can't buy what I want because it's free -
n°1828697
getget
Il y en a qui ont essayé ...
Posté le 17-12-2008 à 17:37:52  profilanswer
 

RAAAAAAAAAAAAAAAAHHHHH
 
Une p*ù$ain d'erreur de typo dans ma requète :/
Ca marche (au moins en local).


---------------
Gamertag : Getget94 - PSN : Getget1980 - Nintendo Network : Getget1980 - Uplau : Getget1980
n°1828736
esox_ch
Posté le 17-12-2008 à 19:16:20  profilanswer
 

On pourrait voir ta requête? Parce que ça fait un moment que je te lis, et je suis toujours pas sûr d'avoir compris ton problème


---------------
Si la vérité est découverte par quelqu'un d'autre,elle perd toujours un peu d'attrait
n°1828752
getget
Il y en a qui ont essayé ...
Posté le 17-12-2008 à 21:02:22  profilanswer
 

SELECT gmp.gestiut_profs.Nom AS nomprof,vt.enseignements.nom AS nomenseignement
FROM gmp.mabase
LEFT JOIN vt.uneautre ON (vt.uneautre.codeSeance=gmp.mabase.idSeanceVt)
LEFT JOIN vt.encoreune ON (vt.encoreune.codeEnseignement=vt.uneautre.codeEnseignement)
WHERE
     (gmp.mabase.idAbsence
     IN (SELECT MAX(gmp.mabase.idAbsence)
          FROM gmp.mabase
          GROUP BY gmp.mabase.idSeanceVt, gmp.mabase.idSuivre_semestre)
     )
     AND gmp.mabase.idSuivre_semestre=:idSuivre_semestre

 

Bien évidemment, j'ai changé les noms des bases et j'ai pas mit tous les champs :D


Message édité par getget le 17-12-2008 à 21:03:31

---------------
Gamertag : Getget94 - PSN : Getget1980 - Nintendo Network : Getget1980 - Uplau : Getget1980
mood
Publicité
Posté le   profilanswer
 


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  SQL/NoSQL

  [Mysql][PDO] Comment faire un SELECT sur 2 bases ?

 

Sujets relatifs
MySQL - Probleme pour supprimer un champ sur Grosse DBAide pour une requête (MySQL)
PHP FORM MYSQLCompter le nombre de selection faite sur un select
[PHP/MySQL/JAVA] Présentation d'un site innovant. Vos réactionsProbleme MySQL
Relier JAVA à base de donnée MySQL distante / JDBCJeux de caractère Mysql
[résolu] Bug GROUP By sur MySql 3.23 ?Import d'une table Access vers MySql
Plus de sujets relatifs à : [Mysql][PDO] Comment faire un SELECT sur 2 bases ?


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR