|
Publicité | ||||||||||||||||||||||
|
|
#1 |
|
Membre confirmé
![]() |
Bonjour, je viens vers vous car je n'arrive pas à former une requête de mise à jour, je ne vois pas comment faire...
De plus mes 2 tables sont sur le même serveur, mais pas sur la même base, après je peut dupliquer ma 1ere table dans la seconde base si il y a besoin... J'ai une table T1 dans une base BDD1 contenant entre autre champs les champs "reference" et "prix". J'ai une table T2 dans une base BDD2 contenant entre autre les champs "reference" et "prix". Je veux mettre à jour les prix de T2 à partir des prix de T1. Petite subtilité, une référence de T1 peut avoir plusieurs concordances dans T2 sous la forme de "référence %%%" Merci d'avance à tous de votre aide en espérant avoir été clair
__________________
Le contenu est roi, optimisé il est empereur... Comme la Hongrie, le monde informatique a une langue qui lui est propre. Mais il y a une différence. Si vous restez assez longtemps avec des Hongrois, vous finirez bien par comprendre de quoi ils parlent. http://www.tethis-interactive.com |
|
|
00
|
|
|
#2 |
![]() ![]() Vincent Inscription : juillet 2005 Messages : 14 929 ![]() |
Je me lance :
Code sql :
UPDATE T2 JOIN T1 ON T2.reference=T1.reference SET T2.prix = T1.prix |
|
|
00
|
|
|
#3 |
|
Membre confirmé
![]() |
Hum je vois a peu près le principe mais la ca ne prends pas en compte que mes 2 références ne soit pas exactement pareil si ?
__________________
Le contenu est roi, optimisé il est empereur... Comme la Hongrie, le monde informatique a une langue qui lui est propre. Mais il y a une différence. Si vous restez assez longtemps avec des Hongrois, vous finirez bien par comprendre de quoi ils parlent. http://www.tethis-interactive.com |
|
|
00
|
|
|
#4 |
![]() ![]() Vincent Inscription : juillet 2005 Messages : 14 929 ![]() |
Pourquoi tes clefs ne sont pas uniformes ?
Je pense qu'on peut faire un truc totalement affreux comme : Code :
UPDATE T2 JOIN T1 ON T2.reference='Référence ' & T1.reference SET T2.prix = T1.prix |
|
|
00
|
|
|
#5 |
|
Membre du Club
![]() Stéphanie Lennon Inscription : juin 2009 Messages : 66 ![]() |
Bonjour.
Je ne suis pas sûre, mais si tes deux tables sont sur deux BDD, un simple Code :
UPDATE T2 JOIN T1 ON T2.reference=T1.reference SET T2.prix = T1.prix Tu veux le faire en une seule requête SQL ? Parce que sinon en PHP ça doit être un peu plus simple je pense. |
|
00
|
|
|
#6 |
|
Membre confirmé
![]() |
Je disais que je pouvais si besoin dupliquer T1 sur BDD2
Effectivement j'ai pensé au Php mais pour une fois j'avoue que je vois pas bien l'algorithme a suivre....
__________________
Le contenu est roi, optimisé il est empereur... Comme la Hongrie, le monde informatique a une langue qui lui est propre. Mais il y a une différence. Si vous restez assez longtemps avec des Hongrois, vous finirez bien par comprendre de quoi ils parlent. http://www.tethis-interactive.com |
|
|
00
|
|
|
#7 |
![]() ![]() Vincent Inscription : juillet 2005 Messages : 14 929 ![]() |
Deux bases distinctes ne pose aucun problème tant qu'elles sont sur le meme serveur.
|
|
|
00
|
|
|
#8 |
|
Membre confirmé
![]() |
Certes mais dans ta requête tu ne spécifie pas dans quelle base trouver T1 et quelle base trouver T2 si ?
__________________
Le contenu est roi, optimisé il est empereur... Comme la Hongrie, le monde informatique a une langue qui lui est propre. Mais il y a une différence. Si vous restez assez longtemps avec des Hongrois, vous finirez bien par comprendre de quoi ils parlent. http://www.tethis-interactive.com |
|
|
00
|
|
|
#9 |
![]() ![]() Vincent Inscription : juillet 2005 Messages : 14 929 ![]() |
Ca s'ecrit comme ça : base.table.colonne
Ta connexion peut se faire sur n'importe laquelle des deux bases, ou sur aucune des deux puisque tu spécifies leurs noms dans la requête. |
|
|
00
|
|
|
#10 |
|
Membre du Club
![]() Stéphanie Lennon Inscription : juin 2009 Messages : 66 ![]() |
Re-bonjour.
Qu'il s'agisse de PHP comme de SQL, la démarche est relativement simple si j'ai bien compris ton problème : - récupération des données dans T1 - éventuellement formatage de ces données (pour pouvoir faire coller tes références, même si j'avoue ne pas avoir bien compris ce point-là) - mise à jour de T2 Dupliquer T1 sur BDD2 est la solution la plus simple effectivement, mais je suppose qu'il devait y avoir une raison aux différences entre T1 et T2, donc à voir s'il faut conserver ces différences, et si tu choisis de dupliquer, voir comment garder un lien entre T1 "bis" et T2 si besoin... Est-ce que tu pourrais donner un exemple pour cette histoire de références différentes ? Merci. |
|
00
|
|
|
#11 |
|
Membre confirmé
![]() |
Une fois mise a jour plus besoin de corélation entre les deux bases...
En fait pour les références dans T1 j'ai par exemple 1405 et dans T2 1405 B - 1405 Y erc... qui signifie la référence 1405 en noir "Black" ou jaune "Yellow" car c'est un site qui a été mis a jour et remis a jour, et re-remis a jour avant que j'arrive dans la boite...et oui je suis d'accord avec vous c'est un peu bancale
__________________
Le contenu est roi, optimisé il est empereur... Comme la Hongrie, le monde informatique a une langue qui lui est propre. Mais il y a une différence. Si vous restez assez longtemps avec des Hongrois, vous finirez bien par comprendre de quoi ils parlent. http://www.tethis-interactive.com |
|
|
00
|
|
|
#12 |
|
Membre du Club
![]() Stéphanie Lennon Inscription : juin 2009 Messages : 66 ![]() |
Finalement, ça ne paraît pas plus compliquer en SQL qu'en PHP, autant pour moi ^^
Donc, si je comprends bien, quelle que soit la référence dans T2, tu vas mettre à jour d'après T1 ? Du coup il n'y aura plus de différences entre 1405-B, 1405-Y, etc. dans T2 après mise à jour ? Peut-être qu'il faudrait commencer par "faire un peu de ménage" dans T2 avant de continuer histoire d'alléger la suite ? |
|
00
|
|
|
#13 |
|
Membre confirmé
![]() |
En fait par exemple dans T1 j'ai la réf 1405 à 10€
Dans T2 je peut avoir des références du type : 1405 B 1405 Y 1405 NB 1405 XXXX qui sont toutes par exemple a 15€ Il faut que je fasse concorder mes prix de T2 avec ceux de T1 c'est à dire mettre toutes les références du type 1405%% à 10€ il n'y a aucune référence en trop dans T2 suis-je clair ?
__________________
Le contenu est roi, optimisé il est empereur... Comme la Hongrie, le monde informatique a une langue qui lui est propre. Mais il y a une différence. Si vous restez assez longtemps avec des Hongrois, vous finirez bien par comprendre de quoi ils parlent. http://www.tethis-interactive.com |
|
|
00
|
|
|
#14 | ||
|
Membre du Club
![]() Stéphanie Lennon Inscription : juin 2009 Messages : 66 ![]() |
C'est clair
Finalement, avec la requête toute simple de Sabotage, ça paraît plutôt simple en mettant ta référence dans une close WHERE... à la condition bien sûr que toutes tes références, dans T1 comme dans T2, aient un "format" similaire (si des fois les références dans T2 sont 1405-B et d'autres fois B-1405, ça devient un peu plus compliqué Code :
|
||
|
00
|
|
|
#15 |
|
Membre confirmé
![]() |
Yes, elles ont toujours la même structure
La requête me parait clair mais comment je dois l'écrire pour lui dire que T1 est dans BDD1 et T2 dans BDD2 jai pas saisi ce point... Et sinon je l'éxécute direct comme ça dans PhpMyAdmin ? Merci de votre aide en tout cas, j'ai le cerveau qui fume un peu aujourd'hui Et 2ème question Et je devance la question oui je sais suis chiant
__________________
Le contenu est roi, optimisé il est empereur... Comme la Hongrie, le monde informatique a une langue qui lui est propre. Mais il y a une différence. Si vous restez assez longtemps avec des Hongrois, vous finirez bien par comprendre de quoi ils parlent. http://www.tethis-interactive.com |
|
|
00
|
|
|
#16 | |
|
Membre confirmé
![]() |
Citation:
Ce n'est pas moi qui ai créé les bases, je fait de la récup de code, et je sais pas pourquoi mais les références ne sont pas les clés de table...y'a un auto increment en clé
__________________
Le contenu est roi, optimisé il est empereur... Comme la Hongrie, le monde informatique a une langue qui lui est propre. Mais il y a une différence. Si vous restez assez longtemps avec des Hongrois, vous finirez bien par comprendre de quoi ils parlent. http://www.tethis-interactive.com |
|
|
|
00
|
|
|
#17 |
|
Membre du Club
![]() Stéphanie Lennon Inscription : juin 2009 Messages : 66 ![]() |
Bonjour.
Tu veux donc avec ta requête parcourir toute ta table T1 pour actualiser T2 ? Alors pour les BDD différentes, Sabotage disait de noter ta table BDD1.T1 et BDD2.T2 au lieu de juste T1 et T2 je crois... Ensuite, pour la requête, euh |
|
00
|
|
|
#18 | ||
|
Membre confirmé
![]() |
Salut tout le monde en ce vendredi béni qui annonce le week-end
Ce matin j'ai pris mon courage à deux mains et j'ai fait un script Php pour faire ma mise à jour, j'ai fait une variable $table_source car j'ai plusieurs table source en fait Code :
__________________
Le contenu est roi, optimisé il est empereur... Comme la Hongrie, le monde informatique a une langue qui lui est propre. Mais il y a une différence. Si vous restez assez longtemps avec des Hongrois, vous finirez bien par comprendre de quoi ils parlent. http://www.tethis-interactive.com |
||
|
|
00
|
|
|
#19 | ||
|
Membre du Club
![]() Stéphanie Lennon Inscription : juin 2009 Messages : 66 ![]() |
Bonsoir.
Tu peux tout faire en "une fois", sans stocker tes données de T1 dans un tableau je pense. Mais surtout, attention à ta requête de mise à jour : les références n'étant pas identiques, il faut un LIKE dans ta close WHERE, et non un égal... Code :
[edit] Attention aussi au temps que prennent tes requêtes. MySQL déconnecte au bout de 30s par défaut je crois... |
||
|
00
|
|
|
#20 |
|
Membre confirmé
![]() |
Hello, en fait je suis passé par un tableau car c'est ce que je maitrise le mieux, et j'ai mis égal car en fait c'est égal j'avais mal vu, tout a fonctionné et est à jour
Pour les temps d'exec c'est un select simple et un update donc pas de souci merci à tous
__________________
Le contenu est roi, optimisé il est empereur... Comme la Hongrie, le monde informatique a une langue qui lui est propre. Mais il y a une différence. Si vous restez assez longtemps avec des Hongrois, vous finirez bien par comprendre de quoi ils parlent. http://www.tethis-interactive.com |
|
|
00
|
Copyright © 2000-2012 - www.developpez.com