Précédent   Forum des professionnels en informatique > Bases de données > MySQL > Requêtes
Requêtes Forum d'entraide sur les requêtes MySQL
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 25/01/2012, 23h51   #1
Membre régulier
 
Avatar de Netek
 
Homme Damien Gros
Développeur Web
Inscription : mars 2011
Messages : 58
Détails du profil
Informations personnelles :
Nom : Homme Damien Gros
Âge : 25
Localisation : France, Gard (Languedoc Roussillon)

Informations professionnelles :
Activité : Développeur Web

Informations forums :
Inscription : mars 2011
Messages : 58
Points : 73
Points : 73
Envoyer un message via MSN à Netek
Par défaut Plusieurs databases dans la meme requete.

Bonjour,

Voici ce que je cherche à faire :
Code :
INSERT INTO database2.matable VALUES(SELECT * FROM database1.matable)
Seulement je me suis heurté a un probleme, je l'ai simplifié pour aider a comprendre, voici mon code :

Code :
1
2
3
4
5
6
7
$connec1 = mysql_connect($server1,$user1,$pass1);
mysql_select_db('database1',$connec1);
$connec2 = mysql_connect($server2,$user2,$pass2);
mysql_select_db('database2',$connec2);
 
mysql_query("SELECT * FROM matable", $connec1) // Fonctionne
mysql_query("SELECT * FROM matable", $connec2) // Fonctionne
Jusqu'ici tout va bien puisque ces 2 requetes fonctionnent. Le seul soucis c'est que de cette manière je ne peux pas avoir les 2 bdd dans la même requete ( dites moi si je me trompe ).

J'ai donc fais ces tests :

Code :
1
2
mysql_query("SELECT * FROM database1.matable") // Ne fonctionne pas !
mysql_query("SELECT * FROM database2.matable") // Fonctionne !
On voit ici qu'avec cette technique je ne peux pas acceder a la database1. C'est du a l'ordre des mysql_connect en debut de script. Si je place le mysql_connect sur la database1 en dernier, l'acces a database1 fonctionnera mais pas sur databas2.

Quelqu'un a une idée svp ?
Merci d'avance
__________________
Développeur web netek.fr PHP, MySQL, Ajax, jQuery, Drupal, Magento
Netek est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 26/01/2012, 13h16   #2
Membre régulier
 
Avatar de Netek
 
Homme Damien Gros
Développeur Web
Inscription : mars 2011
Messages : 58
Détails du profil
Informations personnelles :
Nom : Homme Damien Gros
Âge : 25
Localisation : France, Gard (Languedoc Roussillon)

Informations professionnelles :
Activité : Développeur Web

Informations forums :
Inscription : mars 2011
Messages : 58
Points : 73
Points : 73
Envoyer un message via MSN à Netek
Personne n'a une idée, une piste ?
Merci.
__________________
Développeur web netek.fr PHP, MySQL, Ajax, jQuery, Drupal, Magento
Netek est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 26/01/2012, 14h07   #3
Membre habitué
 
Inscription : mai 2008
Messages : 285
Détails du profil
Informations personnelles :
Âge : 27
Localisation : France, Loire (Rhône Alpes)

Informations forums :
Inscription : mai 2008
Messages : 285
Points : 111
Points : 111
Code :
mysql_query("SELECT * FROM database1.matable") // Ne fonctionne pas !
Je pense que tu n'a pas le droit de faire une requête sur deux bases sur des serveurs différents:
Rajoute ceci pour connaitre ton erreur:
or die ('Erreur :'.mysql_error()); Ou exécute ta requête dans phpmyadmin!

Par contre, je pense que tu dois pouvoir faire une requête sur de 2 bases différentes sur le même serveur.
peofofo est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 26/01/2012, 17h26   #4
Modérateur
 
Avatar de CinePhil
 
Homme Philippe Leménager
Ingénieur d'études en informatique
Inscription : août 2006
Messages : 11 030
Détails du profil
Informations personnelles :
Nom : Homme Philippe Leménager
Âge : 48
Localisation : France, Haute Garonne (Midi Pyrénées)

Informations professionnelles :
Activité : Ingénieur d'études en informatique
Secteur : Enseignement

Informations forums :
Inscription : août 2006
Messages : 11 030
Points : 18 331
Points : 18 331
Envoyer un message via MSN à CinePhil
Je confirme ce que dit peofofo. Tu ne peux faire une requête sur deux bases que si les deux bases sont sur le même serveur.

Et dans ce cas, inutile de faire un mysql_select_db().
__________________
Philippe Leménager. Ingénieur d'étude à l'École Nationale de Formation Agronomique.
Mon blog sur la conception des BDD, le langage SQL, le PHP avec Zend Framework...
« Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément ». (Nicolas Boileau)
À la maison comme au bureau, j'utilise Mandriva Linux ou Mageïa ! Soutenons l'industrie logicielle française !
Linuxiens, comptez-vous !
CinePhil est actuellement connecté   Envoyer un message privé Réponse avec citation 00
Vieux 26/01/2012, 18h07   #5
Membre régulier
 
Avatar de Netek
 
Homme Damien Gros
Développeur Web
Inscription : mars 2011
Messages : 58
Détails du profil
Informations personnelles :
Nom : Homme Damien Gros
Âge : 25
Localisation : France, Gard (Languedoc Roussillon)

Informations professionnelles :
Activité : Développeur Web

Informations forums :
Inscription : mars 2011
Messages : 58
Points : 73
Points : 73
Envoyer un message via MSN à Netek
Ok merci pour vos réponses.
En fait les 2 bdd sont sur le même serveur mais n'ont pas le meme user, du coup obligé de faire 2 connexions.

Mais je vais arranger ca pour avoir le même user et donc une seule connexion.

Merci
__________________
Développeur web netek.fr PHP, MySQL, Ajax, jQuery, Drupal, Magento
Netek est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 26/01/2012, 22h43   #6
Membre Expert
 
Homme Eric Dureuil
Développeur informatique
Inscription : avril 2011
Messages : 875
Détails du profil
Informations personnelles :
Nom : Homme Eric Dureuil
Localisation : France, Isère (Rhône Alpes)

Informations professionnelles :
Activité : Développeur informatique
Secteur : High Tech - Multimédia et Internet

Informations forums :
Inscription : avril 2011
Messages : 875
Points : 1 368
Points : 1 368
salut,

ça dépend en fait de comment tu t'identifie et si les bd sont sur le même serveur ou pas...

en gros: si ton utilisateur a les droits nécessaires pour les différentes bd et si elles sont sur le même serveur, tu peux accèder à tout ce que ton utilisateurs peut accéder sur les différentes bd...

tu peux utiliser un mixe du nommage explicite (nom_bd.nom_ressource) ou implicite (avec la commande sql use ou php mysql_select_db par exemple)

si tu es sur différents serveurs, faut être identifié sur chacun d'eux... et là c'est loin d'être simple et les connecteurs sgbd ne sont pas penser comme ça...

sinon c'est une architecture unique mais répartie, ce qui t'oblige à utiliser des moteur et des options de compilation de mysql spécifiques et tu ne te connecte alors que sur l'un deux de toute façon...
__________________
Eric Dureuil, développeur web, c/c++, java indépendant
soyons
pensez à mettre et
ericd69 est actuellement connecté   Envoyer un message privé Réponse avec citation 00
Vieux 27/01/2012, 09h22   #7
Membre régulier
 
Avatar de Netek
 
Homme Damien Gros
Développeur Web
Inscription : mars 2011
Messages : 58
Détails du profil
Informations personnelles :
Nom : Homme Damien Gros
Âge : 25
Localisation : France, Gard (Languedoc Roussillon)

Informations professionnelles :
Activité : Développeur Web

Informations forums :
Inscription : mars 2011
Messages : 58
Points : 73
Points : 73
Envoyer un message via MSN à Netek
Après avoir appliqué les mêmes users aux 2 bdds, je n'ai donc besoin que d'une seule connexion dans mon script, et du coup tout marche nikel, merci
__________________
Développeur web netek.fr PHP, MySQL, Ajax, jQuery, Drupal, Magento
Netek est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 00h53.


 
 
 
 
Partenaires

Hébergement Web