jokerman Posté 7 Février 2006 Posté 7 Février 2006 Bonjour a tous. Je vous expose mon probleme : j'ai 2 tables : article_tbl ------------- article_id (index autoincrementé) ... et input_stocl_tbl ----------------- stock_id (index autoincrementé) article_id ... dans le processus normal, je cré une entrée dans la table article_tbl puis dans la table input_stocl_tbl . Suite a un probleme, une partie de la table article_tbl a été perdue je voudrai reconstruire les articles manquant, à partir de la Table input_stocl_tbl qui possede une partie des infos de chaque article de la table article_tbl je voudrais faire une requette pour afficher les données de input_stocl_tbl si input_stocl_tbl.article_id n'existe pas dans article_tbl. Vous avez une solution ? merci d'avance
smile Posté 7 Février 2006 Posté 7 Février 2006 Salut, L'article_id de ta table article_tbl est en clé primaire et donc ne peut etre en double, ensuite en faisant un select avec un distinct sur le champs article_id de ta table input_stocl_tbl te permettra d'avoir qu'une ligne par article_id. Il te reste plus qu'a inserer ensuite dans ta table article_tbl les id manquants
jokerman Posté 7 Février 2006 Auteur Posté 7 Février 2006 (modifié) Bonjour, et merci pour ta réponse, je ne sais pas si j'ai été assé clair : j'ai 2 tables : article_tbl------------------------------------article_id (key) | article_nom | etc ...------------------------------------1 | abc |2 | tralala |input_stocl_tbl------------------------------------stock_id (key) | article_id | quantite------------------------------------1 | 1 | 52 | 1 | 23 | 3 | 11 Procedure : 1/ un article est ajouté dans la table article_tbl (le catalogue). disons l'article abc (article_id = 1). 2/ j'ajoute dans la table input_stocl_tbl (le stock) l'article abc lundi (quantite 5) et mercredi (quantite 2) j'ai donc pour l'article abc : une ligne dans la table article_tbl (le catalogue). et une ou plusieurs lignes dans la table input_stocl_tbl (le stock) la valeur du champ article_tbl.article_id est identique à input_stocl_tbl.article_id. Mon probleme : ------------------------ les les 100 derniers articles de article_tbl (le catalogue) ont disparu (obligation de remttre une sauvegarde ancienne de la table des articles, je me retouve donc avec des articles dans la table du stock (input_stocl_tbl) , qui n'existent plus dans le catalogue(article_tbl). Je voudrais faire un SELECT sur la table input_stocl_tbl en selectionnant (par les champs input_stocl_tbl.article_id et article_tbl.article_id ) les articles dans le stock qui n'existent plus dans le catalogue(article_tbl). Ensuite je souhaite faire un INSERT dans la table article_tbl pour recréer les articles manquants, est-ce comprehensible ? Modifié 7 Février 2006 par jokerman
smile Posté 7 Février 2006 Posté 7 Février 2006 Ben oui de tete j'avais bien imaginer cela mais ca confirme ce que j'ai expliqué plus haut, l eproblème c'est que tu n'auras plsu le nom des articles, il faudra les recreer mais voici le code : $kf="SELECT distinct article_id FROM input_stocl_tbl";$f=mysql_query($kf) or die(mysql_error('erreur'));while($data = mysql_fetch_array($f)) { $result1 = mysql_query("INSERT INTO article_tbl (article_id article_nom) VALUES ('$data[article_id]','sais pas perdu')"); } si lors de l'insert l'id existe déjà il devrait pas l'inserer etant donné que ta clé est primaire.
Spidetra Posté 8 Février 2006 Posté 8 Février 2006 SELECT * FROM input_stocl_tbl WHERE article_id NOT IN ( SELECT * FROM article_tbl ) te donne toutes les lignes de input_stocl_tbl qui ne sont pas dans article_tbl.
jokerman Posté 8 Février 2006 Auteur Posté 8 Février 2006 Merci beaucoup à tous les deux j'ai pu réparer la base C nickel Une derniere petite question est t'il possible d'afficher a l'ecran (print) l'id des champs traités par une requette INSERT ou UPDATE ? (genre verbose de la requette) ? Merci encore jokerman
Sujets conseillés
Veuillez vous connecter pour commenter
Vous pourrez laisser un commentaire après vous êtes connecté.
Connectez-vous maintenant