|
Publicité ' | ||||||||||||||||||||||||
|
|
#1 |
|
Invité de passage
![]() Inscription : février 2008 Messages : 13 ![]() |
Bonjour
Il est vraiment très rare que je fasse appel a vous car je préfère largement apprendre et découvrir pas moi même, mais pour ce qui concerne ce problème actuel je ne maitrise absoumement pas les requete mysql. J'aurais besoin d'avoir une requete dont le but est de checker dans une base X la table "user" qui contient différent champs, les 2 qui m'interessent sont les champ "nom" et le champs "groupe", A coté de cela j'ai une base Y qui contient des tables, dont une qui s'appelle "compte" et qui contient les champs A,B,C,D,E,F,G ayant pour fonction: A>>id user qui est générer de facon chronologique int(11) NOT NULL auto_increment B> qui devra toujours avoir la valeur de 1 int(11) default NULL C> qui devra toujours avoir la valeur -1 int(11) default NULL D> qui devra etre égale aux champs user de la table X varchar(40) default NULL E> qui devra toujours avoir pour valeur le mot "toto" varchar(80) default NULL F> doit etre généré en fonction de la date du jour: jjmmaaahhmmss varchar(20) default NULL G> qui devra avoir la valeur <null> varchar(20) default NULL La requete devra faire en sorte que si le champs groupe de la tabel X à pour valeur 18 alors la requete remplira les champs dans la base Y en faisant en sorte que le contenu du champs D de la tabel Y soite égale au contenu du champs "user" de la table X. Le but de la manoeuvre étant de faire en sorte que l'ajout d'un membre dans la table X se répercute également dans la table Y une fois la requete exéxutée et automatisée. Amicalement |
|
|
00
|
|
|
#2 |
|
Provisoirement toléré
Inscription : juin 2003 Messages : 2 622 ![]() |
Salut,
Peux-tu nous en dire plus sur le contexte applicatif du problème ? Typiquement tu pourrais gérer cette insertion dans la table Y dans le code de ton application (s'il y en a une), ou l'automatiser avec un trigger sous MySQL 5.0 +
__________________
Pensez au bouton
|
|
|
00
|
|
|
#3 |
|
Invité de passage
![]() Inscription : février 2008 Messages : 13 ![]() |
J'en suis a la page 64 du forum et j'ai vu qu'il existait une fonction trigger, celle-ci de ce que j'ai compris me permettrais également de faire en sorte que si je modifi le group de la table X alors la modification sera automatiquement détecté et pourrait aussi incrémenter ma table X ce qui serai plus pratique ^^
|
|
|
00
|
|
|
#4 |
![]() ![]() ![]() Antoine DinimantConsultant en Business Intelligence Inscription : octobre 2006 Messages : 5 854 ![]() |
A quoi servent tes colonnes B, C, E et G ?
Ta colonne F devrait être en TIMESTAMP et non en VARCHAR. Pourquoi ne pas donner des noms de colonnes explicites ? [EDIT] la page 64 du forum ??? |
|
|
00
|
|
|
#5 | ||||
|
Invité de passage
![]() Inscription : février 2008 Messages : 13 ![]() |
Bah oui la page 64, comme je n'ai rien trouvé de flagrant dans le moteur de recherche et bien je reagarde tous les topic crés
Pour expliquer un peu plus, je dispose de 2 base, une est la base d'un forum et l'autre la base d'un serveur vocal Ce qui m'interesse c'est la table user du forum et la table client du serveur vocal, la table user contient des centaines de membre enregistré, parmis ces membres il y en a qui sont dans un group particulier a savoir le groupe 18, ce que je veux c'est que si un membres est dans le groupe 18 de la table user du forum alors la requete creera une entré dans la table client de la base serveur vocal en rensigneant les champs. table du serveur vocal: Code :
table du forum: Code :
si dans la table mgroup= 18 alors créer une entrée dans la table client et faire en sorte que name de la table members = s_client_name de la table clients i_client_id devra donc etre incrémenté tout seul i_client_server_id`devra avoir pour valeur 1, b_client_privilege_serveradmin -1 s_client_name = name s_client_password devra avoir pour valeur toto dt_client_created date d'intégration du membre jjmmaaahhmmss dt_client_lastonline devra avoir pour valeur <null> J'espère que mon complément d'information saura vous éclairer |
||||
|
|
00
|
|
|
#6 | ||
![]() ![]() ![]() Antoine DinimantConsultant en Business Intelligence Inscription : octobre 2006 Messages : 5 854 ![]() |
Je comprends mieux la logique comme ça !
Donc, si je suppose que tes bases s'appellent forum et serveurvocal : Code :
|
||
|
|
00
|
|
|
#7 | |||
|
Invité de passage
![]() Inscription : février 2008 Messages : 13 ![]() |
Ce me plait bien ca ^^ par contre de ce que je comprend avec mes maigres capacité c'est que si j'ajoute un membre dans la table forum ca va ajouter le membre dans la table serveurvocal, or le membre ne doit s'ajouter dans la table serveurvocal que si l'on place le membre de la table forum dans le group 18 (champs mgroup) et a ce moment il prend la valeur du champs name de la table forum pour le placer dans le champs s_client_name de la table serveur vocal
Citation:
Ca serai peut etre un truc dans ce gout la: Code :
|
|||
|
|
00
|
|
|
#8 | ||||
![]() ![]() ![]() Antoine DinimantConsultant en Business Intelligence Inscription : octobre 2006 Messages : 5 854 ![]() |
Citation:
Avec la modif sur le name, ça donne : Code :
Citation:
Ensuite, dans ta table serveurvocal.clients, il est possible que le client existe déjà. Il faudrait en fait utiliser REPLACE INTO à la place de INSERT INTO, ou bien INSERT INTO... ON DUPLICATE KEY UPDATE. |
||||
|
|
00
|
|
|
#9 | ||
|
Invité de passage
![]() Inscription : février 2008 Messages : 13 ![]() |
A mince, donc ca ne va pas allé car les membre sont dabord dans un group 6 puis au bout de X jours on les bascules en group 18, le plus simple serait alors je pense de se passer du trigger et de faire un requete.
Pour info tout tourne sur un serveur dédié avec un accès ssh donc pas de soucis pour faire un cron qui s'exécute tous les jours avec les meme base a savoir que je lance la requete elle va checker le mgroup et si celui-ci est egal a 18 alors il fait les insert dans la tabel serveur vocal Ca marcherai ca ? Code :
pour indiquer que Si dans la base forum et dans la table members le champs mgour=.....
|
||
|
|
00
|
|
|
#10 | ||
![]() ![]() ![]() Antoine DinimantConsultant en Business Intelligence Inscription : octobre 2006 Messages : 5 854 ![]() |
Pas tout à fait... le UPDATE ne s'écrit pas comme un INSERT.
Par ailleurs, attention, c'est new.name et non pas name, new représenant les données modifiées. Ce serait donc ça : Code :
|
||
|
|
00
|
|
|
#11 | |
|
Invité de passage
![]() Inscription : février 2008 Messages : 13 ![]() |
Citation:
Je fait un test pour voir si ca tourne |
|
|
|
00
|
|
|
#12 | ||
|
Invité de passage
![]() Inscription : février 2008 Messages : 13 ![]() |
Oulala il est pas content
Code :
|
||
|
|
00
|
|
|
#13 |
![]() ![]() ![]() Antoine DinimantConsultant en Business Intelligence Inscription : octobre 2006 Messages : 5 854 ![]() |
Quelle est ta version de MySQL ?
|
|
|
00
|
|
|
#14 |
|
Invité de passage
![]() Inscription : février 2008 Messages : 13 ![]() |
Oups pardon désolé j'ai oublié de le spécifié, je tourne sur une debian etch sous mysql 5.032
|
|
|
00
|
|
|
#15 | ||
![]() ![]() ![]() Antoine DinimantConsultant en Business Intelligence Inscription : octobre 2006 Messages : 5 854 ![]() |
Non, c'est moi qui déconne, ce n'est pas AS mais FOR EACH ROW :
Code :
|
||
|
|
00
|
|
|
#16 | ||
|
Invité de passage
![]() Inscription : février 2008 Messages : 13 ![]() |
il a pas l'ait d'aimer le date_format
Code :
|
||
|
|
00
|
|
|
#17 |
![]() ![]() ![]() Antoine DinimantConsultant en Business Intelligence Inscription : octobre 2006 Messages : 5 854 ![]() |
Il est très bien mon date_format ! d'ailleurs c'est le seul bout de code que j'ai testé !
En fait, il te manque une ) avant VALUES. |
|
|
00
|
|
|
#18 | |||
|
Invité de passage
![]() Inscription : février 2008 Messages : 13 ![]() |
J'ai donc modifier comme ceci:
Code :
Citation:
|
|||
|
|
00
|
|
|
#19 |
![]() ![]() ![]() Antoine DinimantConsultant en Business Intelligence Inscription : octobre 2006 Messages : 5 854 ![]() |
Via phpMyAdmin, il faut changer le séparateur ; par autre chose, par exemple #. C'est en bas à gauche dans les versions récentes (et ça n'existe pas du tout dans les plus anciennes).
|
|
|
00
|
|
|
#20 | |
|
Invité de passage
![]() Inscription : février 2008 Messages : 13 ![]() |
J'avais bien fait attention au séparateur et dans ma version de phpmyadmin j'ai bien un champs pour lui indiqué le séparateur que j'utilise:
Citation:
|
|
|
|
00
|
Copyright © 2000-2012 - www.developpez.com