如何查询SQLIte创建视图?说明中的更多信息

时间:2018-09-19 11:17:51

标签: sql sqlite

我有两个表,即图中的Item_Details和Item_Qty。 Item_Details包含有关该项目的常规详细信息,而Item_Qty包含数量(同一项目有多个条目)。

我的目标
我想创建一个包含Item_Details中所有列以及一个名为Qty的附加列的View。此“数量”列应包含Item_Qty中特定项目的所有数量的总和。为清楚起见,请参阅图片。由于我没有使用sqlite的经验,所以我不知道如何执行这种复杂的查询。谢谢
enter image description here

2 个答案:

答案 0 :(得分:1)

CREATE VIEW v_item_qty AS
SELECT
    item_details.Sl_No,
    item_details.Item,
    item_details.Color,
    item_details.Size,
    SUM(item_qty.Qty) AS Qty
FROM item_details
INNER JOIN item_qty ON item_details.Item = item_qty.Item
GROUP BY item_details.Sl_No, item_details.Item, item_details.Color, item_details.Size
ORDER BY item_details.Sl_No;

这将创建视图以显示所有具有数量记录并汇总数量值的项目。如果某个项目在 item_qty 表中没有记录,则该项目将不会出现在该视图中。

如果需要添加没有数量记录的项目,则需要将 INNER JOIN 更改为 LEFT JOIN

答案 1 :(得分:1)

假设您了解SQL的基础知识(如果不了解,则整个Internet上都有大量资源),您只需要将问题分解为几小部分,就会发现事实并非如此。完全复杂。

  • 选择:结果中需要的列。最后一列QtyItem_Qty表中数量的总和。您将需要SUM集合函数,可在https://www.sqlite.org/lang_aggfunc.html#sumunc这里找到文档。
  • FROM:from子句将包含视图中使用的两个表。提示:您可以在FROM子句中为表名加上别名,在这种情况下,这可能是一个好主意,因为表具有相同的列名。像FROM item_qty iq, item_details id
  • 位置:这是用于告诉查询您希望一个表中的Item列与另一表中的Item列相匹配的子句。像WHERE iq.item = id.item
  • GROUP BY:如果要某个列的“小计”,则聚合函数需要GROUP BY子句。在这种情况下,您需要按物料分类汇总,因此就是GROUP BY。

在执行CREATE VIEW {name} as步骤之前,我建议您进行查询并获得所需的结果。