[RESOLU] problème de condition

problème de condition [RESOLU] - PHP - Programmation

Marsh Posté le 16-02-2006 à 17:17:22    

Bonjour à tous!!
 
j'ai un problème concernant une requete :  
 
voilà j'ai deux tables. il ya un champ d'identifiant qui est commun aux deux.
j'ai fais une requete qui fait :  
si identifiant table 1 == identifiant table 2 : update les données de la table2 avec la table 1.
le problème est pour le traitement d'un cas particulier :  
quand on a un nouvel identifiant, connu uniquement dans la table 1.
je pensais faire si identifiant table1 différent de identifiant table2 : insere moi les données de la table 1 (avec du coup le nouvel identifiant)
ça ne peut pas marcher :
le problème, c'est que j'ai deux whiles imbriqués qui me balayent mes deux arrays, qui correspondent respectivement à mes deux tables.
ce que ça implique : quand les identifiants sont comparés il me compare genre le l'identifiant 1 de la table 1 avec tous les autres de la table2.  
il va donc me faire :
identifiants identiques entre les deux tables :  vrai, faux, faux , faux, faux etc... pour l'identifiant1  
et pareil pour les autres :  identifiant2 : faux, vrai, faux, faux, faux etc...
et donc m'inscrire dans la table 2 je ne sais combien de fois les données nouvelles , qui n'existent que dans la table1.
 
Vous saisissez mon soucis?
il faudrait que je fasse un truc du genre :
si l'identifiant de la table 1 n'existe pas dans la table 2 {insert into table2 données table1}
 
 
je ne vois pas comment faire vous pouvez m'aider s'il vous plait?
 
merci!!
 :D  
et m'i


Message édité par flock86 le 17-02-2006 à 11:49:48
Reply

Marsh Posté le 16-02-2006 à 17:17:22   

Reply

Marsh Posté le 17-02-2006 à 09:21:17    


 
merci beaucoup!!!
je connais pas bien le site, j'avais pas vu l'option rechercher... :sweat:  navré!
après avoir lu les posts que tu m'as filé jet lu un peu de doc sql, j'arrive (normalement) à bien sélectionner ce que je veux...mais pas à le faire glisser dans une autre table...
 
j'ai vu qu'on pouvait faire un INSERT suivi d'un SELECT pour faire des glissements de données de table en table...ce que je me suis employé à faire en faisant une jointure de table...
ma requete semble valide à un point près : il me dit  
 

Code :
  1. $requeteunique = mysql_query ('INSERT INTO `tp_fdv1-1` SELECT tp_edition.* FROM tp_edition LEFT JOIN `tp_fdv1-1` ON tp_edition.Identifiant=`tp_fdv1-1`.Identifiant WHERE `tp_fdv1-1`.Identifiant is NULL') or die (mysql_error());


 
et il me sort :
Colum count doesn't match value count at row1...
 
normal d'un certain point de vue :  tp_fdv1-1 est l'équivalent de tp_edition, mais avec n champs supplémentaires...
j'ai essayé de rajouter une spécifiaction des champs (champs1, champs2, etc...) après insert tp_fdv1-1 où les données doivent être insérées, qui correspond au nombre total de champs de la table tp-edition, mais rien n'y fait....  
 
je suis sur qu'il ne manque pas grand chose!!
 
si quelq'un a une idée...


Message édité par flock86 le 17-02-2006 à 09:27:13
Reply

Marsh Posté le 17-02-2006 à 09:52:40    

bin la il te dit que le nombre de colonnes de tp_fdv1-1 est différent du nombre de colonnes de tp_edition.
 
Si je me souviens bien ton post d'avant, tu dois avoir un current date à rajouter quelque part!

Reply

Marsh Posté le 17-02-2006 à 10:23:36    

ouais!!!
désolé j'ai alzheimer...
je vais fouiner par là...
 
merci anapajari!
je vais regarder la doc sql pour ça, car j'avais moyennement saisi le truc et j'avais trouvé une autre alternative...
current date :  insere une date automatiquement si j'ai bien compris...très pratique en effet.
 
mais dans mon cas, les champs manquants ne sont pas que des dates (il s'agit de tables différentes), il ya pleins de champs en rab, et je me demandais si on pouvait pas insérer les données dans les champs spécifiés et dire "pour ceux qui restent mettre la valeur par défaut càd NULL"
voila...là du coup le current date ne m'est pas très utile, si j'ai bien compris encore une fois... :whistle:  
 
désolé si c'est moi qui suis NULL... :D  :sweat:
 
et j'ai trouvé la réponse...en spécifiant bien les champs à remplir et les données à insérer, peu importe si la taille de la table receveuse est supérieure..!!
 
merci beaucoup de ta patience anapajari!!!


Message édité par flock86 le 17-02-2006 à 11:49:01
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed