Comment lancer une requête multi-bases avec les fonctions MySQL ?Apprenez à faire des requêtes SQL sur plusieurs bases et à les exécuter à l'aide de PHP avec une seule connexion. |
jeudi 03 février 2011 à 17:37
|
Scénario : Vous développez une application PHP 5 pour l'entreprise Informatix qui vend des jeux vidéos et des consoles vidéos. L'administrateur de la base de données MySQL a décidé de diviser l'ensemble en 3 grosses partie :
- Une base jeux vidéo : jeux_video
- Une base consoles vidéo : console_video
- Une base avec les partie communes telles que les clients, les départements etc... : commun
Dans votre application il vous est demandé d'afficher, par date d'achat de la plus récente à la plus ancienne et par ordre alphabétique, le nom des jeux achetés par un client lorsque son nom est saisi.
La requête devrait ressembler à un truc dans ce style :
CODE
SELECT jv.nom AS jv_nom FROM commun.clients c INNER JOIN jeux_video.achats_jeux aj ON (aj.client_id = c.id) INNER JOIN jeux_video.jeux jv ON (jv.id = aj.jeu_id) WHERE c.nom = 'NlC0' ORDER BY aj.date_achat DESC, jv.nom ASC
Reste maintenant à pouvoir lancer cette requête avec PHP. Habituellement nous utilisons dans l'ordre les fonctions mysql_connect pour établir une connexion avec le serveur SQL, puis mysql_select_db pour sélectionner une base de données, et enfin mysql_query pour lancer la requête.
Dans votre cas, pour travailler avec plusieurs bases de données, deux solutions existent :
- Ne pas mettre de fonction mysql_select_db du tout.
- Utiliser la fonction comme ceci : mysql_select_db("")
Vous trouverez sur la toile de nombreuses personnes qui vous proposent de créer deux connexions puis de réinjecter les résultats d'une requête dans l'autre, une sorte de jointure manuelle. Evidemment ces pratiques sont à bannir dans la majorité des cas et proviennent de personnes qui ne savent tout simplement pas comment faire autrement.
|
AuteurNicolas GAUTRONCréateur et administrateur. http://www.informatix.fr |
Dans la même catégorie
Une version mobile de mon site avec le Zend FrameworkDoctrine et le Zend Framework : Présentation, intégration et utilisation
Créer son flux RSS simplement avec Zend_Feed
Un client HTTP / proxy en PHP
Appliquer un layout sur un mail avec le Zend Framework
Activer PHP5 sur un hébergement 1&1
Implode / Explode : Du tableau à la chaine de caractères, de la chaine de caractères au tableau

