double requete en une seule ?

double requete en une seule ? - SQL/NoSQL - Programmation

Marsh Posté le 17-11-2006 à 20:31:22    

je cherche a faire un lien et obtenir des infos a partir de 2 bases de données
 
exemple
base1
 
id   truc
--------
1     1
2     2
3     3
 
 
base2
 
id    nom
----------
1     chien
2     chat
 
 
j'aimerais savoir s'il est possible, en une seule requete,
- on cherche a partir de la base1 l'element truc, lequel renvoi l'id, qui correspond a l'id de la base2, dans laquelle j'aimerais obtenir le nom
 
exemple,
au lieu de faire

Code :
  1. "SELECT id FROM base1 WHERE truc = machin"
  2. puis
  3. "SELECT nom FROM base2 WHERE id = id_de_la_base_1"


 
merci

Reply

Marsh Posté le 17-11-2006 à 20:31:22   

Reply

Marsh Posté le 17-11-2006 à 21:11:59    

Reply

Marsh Posté le 17-11-2006 à 21:27:39    


en quoi c'est important ?
 

select base2.nom  
  from base1, base2  
 where base1.id = base2.id
   and base1.truc = 'machin'

Reply

Marsh Posté le 17-11-2006 à 22:00:23    

cool merci bien !

Reply

Marsh Posté le 18-11-2006 à 09:47:13    

question peut etre bete,
si base1 et base2 sont 2 tables mais d'une base de donnée differente, ça peut marcher en ouvrant les 2 connexions aux bases de données ?

Reply

Marsh Posté le 18-11-2006 à 11:13:24    

voila pourquoi l'SGBD est important...
 
Sous Oracle, on utilise pour cela un couple de DBLINK avec un SYNONYME...  
 
Chaque SGBD à sa technique pour accéder à une autre base...  

Reply

Marsh Posté le 18-11-2006 à 14:30:33    

en fait c'est pas grave
j'ai tout remis dans la même base, pour simplifier le reste
 
et cette requete ne marche pas chez moi
donc je retourne a 2 requettes

Message cité 1 fois
Message édité par Fazer916 le 18-11-2006 à 15:20:26
Reply

Marsh Posté le 19-11-2006 à 12:01:58    

Fazer916 a écrit :

en fait c'est pas grave
j'ai tout remis dans la même base, pour simplifier le reste
 
et cette requete ne marche pas chez moi
donc je retourne a 2 requettes


Tu rigoles :heink:  
 
Je suppose que t'as du mysql très probablement et en utilisant le schéma que tu as donné, si tu veux nom de base2 en utilisant id de base1 et en supposant que truc est une clé étrangère se rapportant à id de base2:

Code :
  1. select b.nom from base1 a left join base2 b on a.truc=b.id where a.id=ma_valeur

Reply

Marsh Posté le 19-11-2006 à 18:37:58    

ok je vais essayer ça
 
pour l'autre requete non elle ne marchait pas, peut etre parce que je lui ai demandé de me fournir tous les champ de la base1 ainsi qu'un champ de la base2, ça complique un peu la ligne

Reply

Marsh Posté le 20-11-2006 à 16:53:59    

arrêtez de mélanger les concepts de BASE et de TABLE :o

Reply

Marsh Posté le 20-11-2006 à 16:53:59   

Reply

Marsh Posté le 20-11-2006 à 17:34:27    

Mais quel bordel ici! :o
 
Table != DB :o
 
Avec certains DBMS, il est possible de récupérer des données de deux DB distinctes, en un seul query, de manière transparente :o


---------------
Now Playing: {SYNTAX ERROR AT LINE 1210}
Reply

Marsh Posté le 20-11-2006 à 17:50:04    

sircam a écrit :

Mais quel bordel ici! :o
 
Table != BD :o
 
Avec certains SGBD, il est possible de récupérer des données de deux DB distinctes, en une seule requête, de manière transparente :o


Voilà on comprend mieux :o
 
S'il a envie d'appeler sa table base :spamafote:

Reply

Marsh Posté le 22-11-2006 à 13:32:48    

oui oui excusez moi c'est un lapsus du 1er post
Dans mon code j'ai bien entendu differencié table et base, et mes tables ne s'appellent pas 'base' bien sur.
mes 2 tables sont ds la mm base, et j'avais plusieurs infos a recuperer sur les 2 tables ne même temps.
 
Je teste cette requete dès que j'ai un moment
merci


Message édité par Fazer916 le 22-11-2006 à 13:33:22
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed