Aller au contenu

Probleme requete mysql 2 tables


Sujets conseillés

Posté

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 :)

Posté

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 :)

Posté (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             | 5
2              | 1             | 2
3              | 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é par jokerman
Posté

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.

Posté

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.

Posté

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 :hourra:

jokerman

Veuillez vous connecter pour commenter

Vous pourrez laisser un commentaire après vous êtes connecté.



Connectez-vous maintenant
×
×
  • Créer...