Soustraction entre tables de deux bases différentes. - SQL/NoSQL - Programmation
Marsh Posté le 20-09-2008 à 21:03:52
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
Marsh Posté le 21-09-2008 à 11:44:52
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.
Marsh Posté le 23-09-2008 à 17:07:13
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 :
|
ou
Code :
|
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.
Marsh Posté le 23-09-2008 à 17:50:53
Pour le 3) je pense qu'il voulait interroger plusieurs bases dans la même requête, sinon évidemment c'est possible
[edit]
...et mysql el permet, tiens donc!
Marsh Posté le 23-09-2008 à 18:12:20
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 |
Et oui. D'ailleurs je me suis pas privé de cette solution quand j'en ai eu besoin.
Marsh Posté le 23-09-2008 à 18:17:58
omega2 a écrit : Et oui. D'ailleurs je me suis pas privé de cette solution quand j'en ai eu besoin. |
Je crois pas que ça existe ailleurs...c'est étrange, comme comportement.
Marsh Posté le 23-09-2008 à 18:31:31
ReplyMarsh Posté le 23-09-2008 à 18:33:36
MagicBuzz a écrit : euh... sql server et oracle le permettent depuis au moins 15 ans |
euh, directement sans rien toucher?
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.
Marsh Posté le 24-09-2008 à 01:44:26
dans sql server, c'est pas plus compliqué que ça :
select NomBase1.NomUser1.NomTable1.NomChamp1 from NomBase1.NomUser1.NomTable1
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...
Marsh Posté le 24-09-2008 à 01:48:56
Code :
|
(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
ç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
Marsh Posté le 24-09-2008 à 08:01:18
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...
Marsh Posté le 24-09-2008 à 10:28:33
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.
Marsh Posté le 20-09-2008 à 20:12:12
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.
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
Message édité par gathor le 20-09-2008 à 21:02:28