sous requete sur autre bd

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : sous requete sur autre bd

par Augure » 07 juil. 2005, 12:08

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.

Oui, mais...

par Pedrounet27 » 06 juil. 2005, 17:32

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 :)

par zeus » 29 juin 2005, 14:58

@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 ?

par albat » 29 juin 2005, 14:48

Un gage pour Zeus ! :langue:

Tu connais le tarif... :lol:

par ouckileou » 29 juin 2005, 14:43

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;

par Bothcry » 29 juin 2005, 14:35

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

par albat » 29 juin 2005, 14:12

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... ;)

par Cyrano » 29 juin 2005, 13:39

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.

par zeus » 29 juin 2005, 13:38

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

sous requete sur autre bd

par bothcry » 29 juin 2005, 13:34

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