如何使用两个表中的数据创建视图
Posted
技术标签:
【中文标题】如何使用两个表中的数据创建视图【英文标题】:How to create a view using data from two tables 【发布时间】:2021-04-11 16:44:49 【问题描述】:我有两张桌子
项目
id (int), 模型(varchar), 重量(浮动), fk_type (int)类型
id (int), 名称(varchar)我想创建一个视图
TypeName(对于每个类型名称)--> varchar NumberOfItems(TypeName 的项目总数)---> int NumberOfModels(TypeName 的模型总数)---> int TotWeight(同样是每个 TypeName 的所有 ITEMS 重量的总和)--->float例如:我有三支铅笔,其中两支型号相同,一支橡皮。我期待得到这样的东西。
TypeName | NumberOfItems | NumberOfModels | TotWeight |
---|---|---|---|
pencil | 3 | 2 | 50 |
rubber | 1 | 1 | 25 |
我尝试过这样的事情,但我无法理解它
SELECT
Type.Name,
(SELECT DISTINCT COUNT(Item.fk_Type) FROM Item GROUP BY Item.fk_Type) NumberOfItems,
(SELECT COUNT(Item.Model) FROM Item,Type WHERE Item.fk_Type = Type.Id)NumberOfModels ,
(SELECT SUM(Item.Weight) FROM Item,Type WHERE Item.fk_Type = Type.Id)TotWeight
FROM
Item, Type
GROUP BY
Type.Name
有人可以帮忙吗?
【问题讨论】:
Bad habits to kick : using old-style JOINs - 旧式 逗号分隔的表格列表 样式已替换为 ANSI 中的 proper ANSIJOIN
语法-92 SQL 标准(近 30 年前),不鼓励使用它
【参考方案1】:
这基本上是一个带有join
的聚合查询:
select t.name, count(i.id) as num_items,
count(distinct i.model) as num_models,
sum(i.weight) as total_weight
from type t left join
item i
on i.fk_type = t.id
group by t.name;
【讨论】:
【参考方案2】:您可以使用联接
SELECT column_name(s)
FROM table1
INNER JOIN table2
ON table1.column_name = table2.column_name;
尝试查找正确的表名。
【讨论】:
以上是关于如何使用两个表中的数据创建视图的主要内容,如果未能解决你的问题,请参考以下文章