FORUM Tom's Hardware » Programmation » PHP & MySQL & ASP » MySQL => insert intelligent
 

MySQL => insert intelligent

Il y a 464 utilisateurs connus et inconnus. Pour voir la liste des connectés connus, cliquez ici
Ajouter une réponse



 Mot :   Pseudo :  
 
Bas de page
Auteur
 Sujet : MySQL => insert intelligent
 
Plus d'informations

Bonjour,
 
contexte :
j'ai un script (vb.net) qui envoi une liste d'infos de PC vers une table (MySQL) tous les matins
 

Code :
  1. INSERT INTO test02 (id,nomMachine,IP,reponsePing,versionDll)
  2. VALUES ('','" & tabNom(i) & "','" & tabIP(i) & "','" & tabReponse(i) & "','" & tabVersion(i) & "')


 
- il faudrait que si une machine n'a pas changée depuis hier, aucune occurence soit rajoutée dans la table (en sachant que l'id est en auto increment donc il faut comparer seulement le reste des infos)
 
- si il y a changement la ligne se rajoute normalement
 
le plus dur est de gérer ceci :
- le pc change (on passe de la version 1 à 2) on ajoute une ligne dans la table
- le pc change (on repasse à la version 1) on ajoute une ligne afin de sauvegarder l'historique
 
il faut donc comparer avant d'ajouter une ligne la version du jour J avec celle du jour J-1 mais comment peut on faire en MySQL? est ce possible? ou faut il que je le code en vb.net?
 
merci d'avance j'espère que vous aurez au moins compris mon interrogation !!
 
Configuration: Windows XP
mysql 5.0
framework 2.0


Message édité par manik971 le 10-04-2008 à 11:14:43

---------------
~ Google est ton ami pose lui les bonnes questions et il saura te répondre ~
zeb
Plus d'informations

Modo: N'hésite pas à utiliser les balises [code] et [fixed] pour présenter tes requêtes. :o

 

Si, misseu, même pou 1 ligne.

 


:jap:


Message édité par zeb le 10-04-2008 à 11:42:36

---------------
Règlement du forum / Règlement de Programmation / Règlement du Monde de Linux euh, n'y en a pas...
zeb
Plus d'informations

Tu connais le Java, tu te mets au VB.
Apprends aussi le SQL. ;)

 

Regarde du côté de EXISTS.

 

EDIT: Je dirais même plus du côté de

INSERT INTO table VALUES ( <valeurs> )
WHERE NOT EXISTS (SELECT .. FROM table WHERE <conditions sur <valeurs>> )


Message édité par zeb le 10-04-2008 à 11:16:10

---------------
Règlement du forum / Règlement de Programmation / Règlement du Monde de Linux euh, n'y en a pas...
Plus d'informations

et toi tu vis sur ce forum, il y a que toi qui me répond, je pensais pas que tu viendrais du côté SQL..
 
soit tu connais un peu tout(ou même très bien) soit t'es champion de recherche google... :)  
 
MERCI


---------------
~ Google est ton ami pose lui les bonnes questions et il saura te répondre ~
Plus d'informations

j'ai une erreur c'est sur le where not exists mais je sais pas où
 

Code :
  1. INSERT INTO test02 (id,nomMachine,IP,reponsePing,versionDll)
  2. VALUES ('','BIPC700','10.7.3.18','true','2.0.0.0')
  3. WHERE NOT EXISTS (SELECT * FROM test02 WHERE nomMachine='BIPC700' and IP='10.7.3.18' and reponsePing='true' and versionDll='2.0.0.0')


 


---------------
~ Google est ton ami pose lui les bonnes questions et il saura te répondre ~
zeb
Plus d'informations

Je suis un champion de google, je te l'accorde.
Mais le SQL n'a plus beaucoup de secrets pour moi. :sol:
 
Mes compétences sur PPC/TH.fr : UNIX/Linux, C/C++, SQL, VB/VBA Excel.
Mes grosses lacunes : HTML/CSS, Java, .NET
Alors forcément, si tu tombes en pleins sur mes domaines de prédilections...
 
Je suis très présent en tant que modérateur, forcément. Alors tant qu'à faire, j'en profite pour aider ou pour troller. J'aime autant l'un que l'autre :D


---------------
Règlement du forum / Règlement de Programmation / Règlement du Monde de Linux euh, n'y en a pas...
Plus d'informations

tu sais si c'est possible de faire ça  
 

Code :
  1. SELECT * FROM(
  2.               SELECT * FROM test02
  3.               WHERE nomMachine='bipc700'
  4.               ORDER BY date desc
  5.               LIMIT 1
  6. )
  7. WHERE nomMachine='bipc700' AND IP='11.0.2.18' AND reponsePing='true' AND versionDll='2.0.0'


le select entre parenthèses me permet de sélectionner le dernier enregistrement qui a était fait sur la machine voulu
et après je le compare à celui que je veux insérer
 
comme ça s'il trouve rien ça veut dire que le nouvel enregistrement est différent donc je vais l'insérer
 
mais cette syntaxe ne marche pas, séparemment elle marche mais l'imbrication foire  :cry:  
 
HELP ME PLZ :pt1cable:


---------------
~ Google est ton ami pose lui les bonnes questions et il saura te répondre ~
zeb
Plus d'informations

Mmmmm.... Je me souviens qu'autrefois on disais du mal de MySQL parce qu'il n'était pas possible d'imbriquer des SELECTs. Est-ce toujours vrai ?

 

En passant, ta requête est plutôt bancale. Sauf si ton premier SELECT n'est qu'un test en mode DEBUG qui sera remplacé par un INSERT.

 

Et ça : http://dev.mysql.com/doc/refman/5. [...] eries.html


Message édité par zeb le 10-04-2008 à 17:15:55

---------------
Règlement du forum / Règlement de Programmation / Règlement du Monde de Linux euh, n'y en a pas...

Aller à :
Ajouter une réponse
  FORUM Tom's Hardware » Programmation » PHP & MySQL & ASP » MySQL => insert intelligent
 

Annonces Google
Publicité