zoukankan      html  css  js  c++  java
  • 产品——仓库表查询

    数据库说明:本次查询采用的是MYSQL

    一、建表

    1.1 需建立的表及字段

    员工表E(employeeID,name,department):员工编号,姓名,部门;

    产品表P(prodectID,name,model,size,color):产品编号,产品名称,型号,尺寸,颜色;

    仓库表W(warehouseID,name,address,employeeID):仓库编号,仓库名称,地址,负责人编号;

    库存表L(warehouseID,prodectID,quantity):仓库编号,产品编号,产品数量。

    1.2 表关系

    仓库表W与员工表E呈一对多关联(one-many),建仓库表时employeeID为外键。

    仓库表W与库存表L呈一对一关联(one-one),建仓库表时有些特殊,因为此表有两个外键,没有主键,如下图所示:

    二、查询

    1.查询每种产品的名称和该产品的总库存量:

    SQL:

    select name,sum(quantity)
    from p,l
    where p.productID=l.productID group by name

    分析:该SQL要求对查询结果进行分组,即相同产品名称分为一组,然后计算每组的库存数量。

    2.查询所有仓库中都存在的产品名称

    SQL:

    select name from p
    where not exists
    (select * from w
    where not exists
    (select * from l
    where p.productID=l.productID and w.warehouseID=l.warehouseID))

    分析:该查询较第一个难一些,主要考察对SQL中的not exists理解及运用,此条的SQL的查询逻辑是先在仓库表w中查询所有仓库没有的商品,基于此结果,再查一下商品表p中的商品名称——是该结果中不存在的,即所有仓库中都存在的商品名称。将此SQL进行拆分说明如下:

    1.先在仓库表w中查询所有仓库没有的商品

    SQL:

    select * from w,p
    where not exists
    (select * from l
    where p.productID=l.productID and w.warehouseID=l.warehouseID)

    结果:

    图1

    分析:

    先看一下库存表l中的数据信息:

    从以上数据信息可看出仓库1只有商品1,缺少商品2,3,所以上面的查询结果应当有2条记录;仓库2,仓库3同理,在上面的查询结果应当各有1条记录,看下“图1”,果然如此。现在重点来了,既然查出了所有仓库中都不存在的商品,那么再次利用 not exists,查询一下商品表p中的商品名称——且在这个结果中(“图1”)不存在的,即为所有仓库中都存在的商品名称。

    2.查询商品表p中的上面结果中不存在的商品名称

    select name from p
    where not exists
    (select * from w
    where not exists
    (select * from l
    where p.productID=l.productID and w.warehouseID=l.warehouseID))

    结果:

  • 相关阅读:
    bzoj4476: [Jsoi2015]送礼物
    牛客练习赛42 E.热爆了
    bzoj3561: DZY Loves Math VI
    bzoj3560: DZY Loves Math V
    bzoj3512: DZY Loves Math IV
    bzoj3481: DZY Loves Math III
    使用WebUploader本地生成缩略图
    centos 7 安装JDK1.8
    APK反编译
    centos 7 配置pytorch运行环境
  • 原文地址:https://www.cnblogs.com/wql025/p/4933864.html
Copyright © 2011-2022 走看看