2010-10-21 8 views
0

Je travaille sur un système d'inventaire.Comparer 2 tables MySQL avec PHP et les afficher avec les différences

Fondamentalement, voici comment j'imagine que cela fonctionnerait. Si vous avez une meilleure solution, n'hésitez pas à me le faire savoir.

Je reçois la mise à jour des stocks tous les jours de mon fournisseur dans le format suivant: sku, inventory_count, état

sku est l'identifiant unique ici. inventory_count est un nombre entier et le statut est normalement "en stock" ou "en rupture de stock" ou abandonné.

Mon idée est que je vais charger le fichier dans une table mysql. Je vais nommer la table mysql avec la date actuelle, par exemple 20101020 pour Octobre 20 et 20101021 pour Octobre 21

Fondamentalement, l'idée est de comparer ces 2 tables et de relier les deux tables (je devine via innerjoin) à travers sku qui est un identifiant unique. Il affichera ensuite les données des tables temporaires qui ont été fusionnées ensemble. S'il y a des différences dans l'inventaire, il apparaîtra comme un message d'avertissement.

Je voulais obtenir des commentaires et voir si j'approche de cette comparaison avec le bon état d'esprit. En outre, je voulais obtenir une idée approximative sur le code php nécessaire pour fusionner les tables et insérer les données, puis récupérer les données fusionnées et l'écho.

Merci

Répondre

0

Création d'un nouveau tableau si identique sur chaque mise à jour ressemble à une dénormalisation grave. Si vous avez absolument besoin de conserver un historique des données d'inventaire, je ne vois pas d'autre moyen sensé que d'ajouter une colonne DATETIME. Ayant cela, vous avez juste besoin d'effectuer un auto-JOIN approprié à la fois date et sku.

Cependant, je ne pense pas que je comprends votre situation. Avez-vous votre fournisseur et vous gardez des stocks parallèles? Si c'est le cas, il semble que la bonne approche consiste à conserver deux tables (et vous n'avez besoin que d'une colonne de date dans les données du fournisseur).

+0

Merci pour la réponse jusqu'à présent. Pour répondre à votre question, le fournisseur donne une mise à jour quotidienne sur l'ensemble de l'inventaire. Je veux juste qu'un système gère cet inventaire pour voir ce qui a changé afin que je puisse gérer cela. La raison pour laquelle j'ai choisi de créer une nouvelle table pour chaque date est que la liste d'inventaire est d'environ 35k lignes et si je continue à ajouter les données dans une table, cela peut devenir énorme. Qu'est-ce que tu penses? – Eddy

+0

Les bases de données sont censées contenir de grandes quantités de données. En tout cas, vous pouvez jeter un coup d'oeil à http://dev.mysql.com/doc/refman/5.1/fr/partitioning.html (je ne me suis jamais essayé) ou, simplement, supprimer les anciennes données - avez-vous besoin de suivre les changements d'inventaire survenus il y a cinq ans? –

+0

Merci pour les commentaires jusqu'à présent. Vous faites un excellent point. Je suppose que je peux garder les données pendant 2 semaines et supprimer les données plus anciennes. Juste pour référence, pourquoi suggérez-vous de ne pas reproduire les tableaux pour chaque jour? – Eddy

Questions connexes