Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1666 connectés 

  FORUM HardWare.fr
  Programmation
  SQL/NoSQL

  Soustraction entre tables de deux bases différentes.

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Soustraction entre tables de deux bases différentes.

n°1789893
gathor
Posté le 20-09-2008 à 20:12:12  profilanswer
 

Voila j'ai deux bases de données (la deuxième est la copie de la première sept jour avant).
Je voudrais voir l'évolution d'un des paramétres (valeur numérique) en faisant la soustraction entre la valeur actuelle et la valeur sept jour avant.
 

Code :
  1. $bd=mysql_connect($bd_host, $bd_user, $bd_pass);
  2. $bd1=mysql_connect($bd_host, $bd_user, $bd_pass, true);
  3. mysql_select_db($bd_name,$bd);
  4. mysql_select_db($bd_name1,$bd1);
  5. .........................
  6. $res = mysql_query($req_last_art, $bd);
  7. $res1 = mysql_query($req_last_art1, $bd1);
  8. $line = mysql_fetch_array($res);
  9. $line1 = mysql_fetch_array($res1);
  10. while($line = mysql_fetch_array($res)){
  11. while($line1 = mysql_fetch_array($res1)){
  12. ........
  13. }}


 
Le problème c'est que ca ne tourne que sur la deuxième base (bd1), la première (bd) reste toujours la sa dernière ligne, elle ne change pas de valeur :/
 
Merci de m'aider :jap:


Message édité par gathor le 20-09-2008 à 21:02:28
mood
Publicité
Posté le 20-09-2008 à 20:12:12  profilanswer
 

n°1789907
gathor
Posté le 20-09-2008 à 21:03:52  profilanswer
 

Alors j'ai trouvé la solution a mon problème, mais pas de la plus belle manière qu'il soit ...
J'ai ajouté un "mysql_data_seek($res1,0);" a la fin de la première boucle ...
 
Est-il possible de faire ce genre de requete directement en Mysql :??:
 
Merci bien

n°1789987
skeye
Posté le 21-09-2008 à 11:44:52  profilanswer
 

1) C'est un problème de php, pas de sql.
2) Le "la première (bd) reste toujours la sa dernière ligne" je pense que ça vient de toi. Montre tes requêtes et le contenu de tes while() imbriqués, et ce que tu voudrais obtenir.
3) Non on ne peut pas interroger deux bases à la fois à ma connaissance.


---------------
Can't buy what I want because it's free -
n°1791002
omega2
Posté le 23-09-2008 à 17:07:13  profilanswer
 

1) pas mieux
2) pareil, par contre j'ai vu qu'il a trouvé comment faire marcher son code (mysql_data_seek étant bien une solution)
3) On peut très bien interroger plusieurs bases de données situé sur plusieurs serveurs différents (ou sur le même) dans le même code et sans ouvrir et fermer les liaisons à chaque requête. Il faut juste préciser l'identifiant de connexion à chaque fois qu'on demande quelque chose à l'une des bases de données.
 
gathor > D'après ton code tes deux bases sont sur le même serveur et accessible avec le même utilisateur. Tu aurais très bien pu utiliser une seule connexion au serveur de base de donnée en sélectionnant une des deux bases, en faisant ensuite la requête correspondante puis en sélectionnant la seconde base (ou, ce qui marche avec mysql, en précisant la base devant le nom de la table dans la partie FROM de la requête) et en exécutant la seconde requête. Cette solution marche normalement avec toutes les bonnes bases de données. A noter que ça fonctionne par ce que le php attend d'avoir reçu toutes les données avant de poursuivre l'exécution du code.
En plus de ça ton serveur de base de donnée est mysql alors tu aurais même pu faire une requête qui travaille directement sur les deux bases à la fois. Ca te donne une requête du genre

Code :
  1. SELECT t1.nom,t1.nombre-t2.nombre FROM base1.table1 AS t1,base2.table2 AS t2 WHERE t1.id=t2.id AND ...

ou

Code :
  1. SELECT t1.nom,t1.nombre-t2.nombre FROM base1.table1 t1 JOIN base2.table2 t2 ON t1.id=t2.id

Cette solution par contre ne marche pas avec tous les serveurs de bases de données. Je me demande même si ça n'est pas unique à mysql.

n°1791035
skeye
Posté le 23-09-2008 à 17:50:53  profilanswer
 

Pour le 3) je pense qu'il voulait interroger plusieurs bases dans la même requête, sinon évidemment c'est possible :D

 

[edit]

 

...et mysql el permet, tiens donc!

Message cité 1 fois
Message édité par skeye le 23-09-2008 à 17:51:20

---------------
Can't buy what I want because it's free -
n°1791045
omega2
Posté le 23-09-2008 à 18:12:20  profilanswer
 

skeye a écrit :

Pour le 3) je pense qu'il voulait interroger plusieurs bases dans la même requête, sinon évidemment c'est possible :D
 
[edit]
 
...et mysql el permet, tiens donc!

Et oui. D'ailleurs je me suis pas privé de cette solution quand j'en ai eu besoin. :sol:

n°1791048
skeye
Posté le 23-09-2008 à 18:17:58  profilanswer
 

omega2 a écrit :

Et oui. D'ailleurs je me suis pas privé de cette solution quand j'en ai eu besoin. :sol:


Je crois pas que ça existe ailleurs...c'est étrange, comme comportement.


---------------
Can't buy what I want because it's free -
n°1791053
MagicBuzz
Posté le 23-09-2008 à 18:31:31  profilanswer
 

euh... sql server et oracle le permettent depuis au moins 15 ans ;)

n°1791055
skeye
Posté le 23-09-2008 à 18:33:36  profilanswer
 

MagicBuzz a écrit :

euh... sql server et oracle le permettent depuis au moins 15 ans ;)


euh, directement sans rien toucher?[:pingouino]
On doit pas parler de la même chose, là, si tu peux interroger dans la même requête 2 SID oracle différents sans faire un dblink tu me préviens, hein, ça m'intéresse.[:dawa]


Message édité par skeye le 23-09-2008 à 18:35:33

---------------
Can't buy what I want because it's free -
n°1791133
MagicBuzz
Posté le 24-09-2008 à 01:44:26  profilanswer
 

dans sql server, c'est pas plus compliqué que ça :
 
select NomBase1.NomUser1.NomTable1.NomChamp1 from NomBase1.NomUser1.NomTable1
 
:spamafote:
 
après, si la seconde base n'est pas sur le même serveur, faurt juste faire un partenariat.
 
oracle, pas testé, ceci dit, tu vas pas me dire que c'est compliqué de faire un dblink...

mood
Publicité
Posté le 24-09-2008 à 01:44:26  profilanswer
 

n°1791134
MagicBuzz
Posté le 24-09-2008 à 01:48:56  profilanswer
 

Code :
  1. SELECT *
  2. FROM sandbox..a a
  3. INNER JOIN Devis..soc s
  4. ON a.id = s.codsoc


 
(le user est facultatif)
 
à savoir qu'un niveau suppérieur existe pour interroger un serveur partenaire, il suffit de mettre son nom en préfixe :spamafote:
 
ça marche comme ça depuis au moins SQL Server 7.0, jamais jamais testé avec le 6.5. M'enfin le 7.0 ça remonte déjà à 1998 à tout péter.
 
sql server gère les transactions entre les bases, les procédures stockées et triggers aussi peuvent inter-oppérer entre bases, avec quelques limitations toutefois


Message édité par MagicBuzz le 24-09-2008 à 01:50:40
n°1791149
skeye
Posté le 24-09-2008 à 08:01:18  profilanswer
 

MagicBuzz a écrit :

oracle, pas testé, ceci dit, tu vas pas me dire que c'est compliqué de faire un dblink...


 
c'est pas compliqué, mais pas trivial non plus. Et ça marche pour un user donné, etc...[:skeye]


---------------
Can't buy what I want because it's free -
n°1791195
omega2
Posté le 24-09-2008 à 10:28:33  profilanswer
 

C'est cool, j'apprends plein de choses ... et c'est con, je suis sur que le jour où j'en aurais besoin je passerais un bon moment avant de retrouver les bonnes infos.


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  SQL/NoSQL

  Soustraction entre tables de deux bases différentes.

 

Sujets relatifs
problème de contrainte Check à deux tables:MYSQL : Créer plusieurs vues ou plusieurs tables ?
[PHP MYSQL]Jointures de tables[Oracle] trouver les colonnes différentes
recupérer donnes de de tablestable composée de tables colonnes
diviser les tables d'une base de donnees sur deux serveur[ACCESS] outil de documentation des relations entre requêtes et tables
Sélectionner des champs de 3 tables différents !!! 
Plus de sujets relatifs à : Soustraction entre tables de deux bases différentes.


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR