我有一个数据库“仓库”,其中包含每日库存记录表,每天一个表。
现在,我需要检查库存水平的历史变化。输出将根据特定条件打印每天的库存。
我不确定如何描述它,因此我创建了模式、其表和预期输出的简化示例。
模式“warehouse”有一个表列表:
每个表都包含相同的产品 ID 和库存列,下面是表 101
对于每个表,我需要执行一个查询: 从 [表名称] 中选择 count(*) 作为 num_of_product_with_inventory。在获得每个表的查询结果后,我应该得到如下所示的输出:
谁能告诉我查询应该是什么样子才能获得最终输出?我只知道基本的查询,不知道如何将它们组合在一起。谢谢!
最佳答案
您拥有的数据模型使您的工作变得比应有的更加困难。 如果必须保留它,则需要使用存储过程或在代码中(而不是在 sql 中)执行循环。
但您真正应该做的是更改数据模型。 完全不建议每天创建一张表!
它是数据与元数据的混合体。表结构应该代表您存储的不同类型的数据,而您的数据中应该包含在日期 X 和日期 Y 上拥有不同库存的事实。
因此,建议创建一个包含 date
、product_id
和 warehouse_inventory
列的表。如果它太大,您可以按日期(周/月/..)对其进行分区。然后您可以通过以下方式轻松获取数据:
SELECT date, count(*) AS num_of_products_with_inventory
FROM daily_inventory i
WHERE i.date BETWEEN '<some date>' and '<some date>'
GROUP BY date
关于mysql - 如何使用mysql中的给定条件查询架构中所有表中的相同列?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38406219/