SQL table virtuelle
-
20-09-2019 - |
Question
Je ma base de données mis en place en tant que tel:
Chaque produit que je possède sa propre table où il enregistre la quantité vendue / transaction # (si la colonne 1 est « transactionID », la colonne 2 est « quantité »)
ex) p-découpeur (où p est une indication de "produit")
Il y a aussi des tables pour chaque année qui détiennent des dossiers de chaque transaction qui est passée par. Chacune de ces tables tient les colonnes suivantes: "transactionID", "date", "temps", "pt_CA", "pt_DB", "pt_VC", "pt_MC", "pt_CH", "pt_AM"
ex) ventes-2008, les ventes-2009, etc., etc.
Je voudrais être en mesure de faire référence à une table unique qui détient tous les records pour chaque année sans avoir à changer le sql pour la table d'inclure une nouvelle année.
Ainsi, par exemple, je veux interroger toutes les transactions pour « p-découpeur », je ne veux pas avoir à taper
SELECT sales-2008.date, sales-2009.date
FROM sales-2008, sales-2009
WHERE sales-2008.transactionID = p-backScratcher.transactionID
OR sales-2009.transactionID = p-backScratcher.transactionID
... mais plutôt:
SELECT sales.date
FROM sales
WHERE sales.transactionID = p-backScratcher.transactionID
La solution
Je voudrais être en mesure de faire référence à une table unique qui détient tous les records pour chaque année sans avoir à changer le sql pour la table d'inclure une nouvelle année.
Ceci est la raison pour laquelle vous ne devriez pas utiliser une table par produit et une table par an.
Qu'est-ce que vous avez besoin est une table "produit" et une table "de transaction".
Autres conseils
Dans SQL, comme les états de réponse de Kyle, vous pouvez créer un Voir , qui est une sorte de table virtuelle, mais je recommande fortement que vous obtenez un livre, ou Google, conception de bases de données relationnelles , avant de vous engager à une structure de base de données.
Qu'est-ce que vous cherchez est appelée « View » qui est à peu près une déclaration stockée qui est une liste de résultats correctement formatés. Vous pouvez l'interroger directement comme il est une table.
Je ne sais pas comment ce projet est grand ou quels sont vos besoins spécifiques sont (par exemple si vous avez le code associé), mais vous pouvez regarder dans la migration de vos données vers MS SQL (ou MySQL, etc.). SQL Server a une édition de bureau qui est gratuit, mais ne supporte qu'un ensemble limité de fonctionnalités (vues sont inclus dans ce).
MySQL, PostGre, etc en charge les fonctionnalités que vous recherchez, y compris les tables héritées de PostGre (pas exactement ce dont vous avez besoin, mais similaire).
Je n'ai pas travaillé avec accès pendant un certain temps, et je ne suis pas sûr qu'il soutiendra les fonctionnalités que vous recherchez.