Page 1 sur 1

sous requete sur autre bd

Posté : 29 juin 2005, 13:34
par bothcry
hello !

qq'un saurait s'il est possible de faire une sous requete qui aille se servir dans une autre base que celle de sa requete parente ?

du genre
select * from toto where id = (select id from popo)

premier select : base1
deuxieme select : base2

Posté : 29 juin 2005, 13:38
par zeus
C'est impossible

Une requête ne se fait que sur 1 base de données à la fois

Si c'est vital, tu peut faire une copie de ta table dans la base de données qui t'intéresse

Posté : 29 juin 2005, 13:39
par Cyrano
Non, ça ne fonctionnera pas. Enfin je ne crois pas et en plus, il faudrait une syntaxe adequat du style:

Code : Tout sélectionner

select * from base1.toto where id = (select id from base2.popo)
Mais je ne crois pas qu'on puisse faire une connexion simultanée sur deux bases en même temps pour une seule et unique requête.

Posté : 29 juin 2005, 14:12
par albat
Une requête ne se fait que sur 1 base de données à la fois
Ça dépend...
ColdFusion te permet (en tout cas, quand j'utilisais la version 4.0, il permettait !)
de lancer une requête SQL impliquant plusieurs bases simultanément.
PHP, je ne sais pas. J'ai jamais essayé.

Au cas où ce serait possible (on ne sait jamais),
tu auras quand même peut-être intérêt à répliquer certaines tables
pour les regrouper dans une même base.

En fait, ta question concerne plus MySQL que PHP.
Je te suggère donc une petite recherche sur http://www.mysql.com... ;)

Posté : 29 juin 2005, 14:35
par Bothcry
apres prise d'info, y s avere qu'avec mysql il est possible de changer de base entre requete et sous requete

suffit de faire select * fril basededonnée.table
etc

Posté : 29 juin 2005, 14:43
par ouckileou
oui c'est possible normalement

il y a un exemple ici : http://dev.mysql.com/doc/mysql/fr/use.html

L'exemple suivant accède à la table author de la base db1 et à la table editor de la base db2 :

Code : Tout sélectionner

SELECT author_name,editor_name FROM author,db2.editor WHERE author.editor_id = db2.editor.editor_id;

Posté : 29 juin 2005, 14:48
par albat
Un gage pour Zeus ! :langue:

Tu connais le tarif... :lol:

Posté : 29 juin 2005, 14:58
par zeus
@Albat : même pas en rêve ... :lol:

Sinon vous m'en bouchez un coin ... :shock:

J'ai cherché à faire ça et malgrès quelques recherches, j'ai finit par faire des vues à partir de tables temporaires

Mince alors, j'aurais su ça, je me serais vachement moins embeter ... :evil:

Et côté performances ?

Oui, mais...

Posté : 06 juil. 2005, 17:32
par Pedrounet27
Merci pour ces informations:

Malgré celà, il me reste (pour le problème que je rencontre personnelement) un léger problème.

Comment doit-on procéder si ces accès aux bases bd1 et bd2 doivent se réaliser obligatoirement avec des mots de passes?

Même si l'on utilise USE pour définir la base par défaut, où faut-il inscrire les login et motdepasse de la base bd2 ?

Merci pour vos idées :)

Posté : 07 juil. 2005, 12:08
par Augure
Salut,

Je ne suis pas expert sur MySQL, donc je ne peux garantir la pertinence de mes réponses à 100%

Deux choses :

1/ La table "user" est dans la base système MySQL. Donc les user sont définis au niveau serveur MySQL. Le serveur MySQL gére plusieurs base.
(Je n'ai pas pas réussi à vérifier ça dans la doc, mais c'est ainsi que travail SQL Server de microsoft et ASE de SYBASE)

2/ La syntaxe de GRANT permet de donner des droits à un login sur 2 bases différentes. Par contre en regardant la syntaxe de plus prés il semble que la granularité de la commande est au niveau du serveur ou d'une base ou d'une table de la base par défaut de l'utilisateur

Code : Tout sélectionner

GRANT priv_type [(column_list)] [, priv_type [(column_list)]] ... ON {tbl_name | * | *.* | db_name.*} TO user
Est il possible de donner des droits sur db_name..tbl_name ? C'est à dire au nievau d'une table d'une autre base. A tester!!!
(note bien les deux points car la syntaxe compléte doit être db_name.[owner_user_table].tbl_name pour respecter la norme SQL ANSI)

source Syntaxe de GRANT
http://www.nexen.net/docs/mysql/annotee ... lien=grant

J'espére que ceci t'aidera un peu.