gpt4 book ai didi

sql - 改进 SQL 查询

转载 作者:搜寻专家 更新时间:2023-10-30 22:03:39 24 4
gpt4 key购买 nike

我正在努力提高我的 SQL 知识,并执行 sql-ex.ru。

现在我被这样的问题困住了。我有这样的任务:

*数据库方案由四张表组成:

Product(maker, model, type)
PC(code, model, speed, ram, hd, cd, price)
Laptop(code, model, speed, ram, hd, screen, price)
Printer(code, model, color, type, price)

Product 表包含有关制造商、型号和类型(“PC”、“笔记本电脑”或“打印机”)的信息。假定 Product 表中的型号对于所有制造商和产品类型都是唯一的。

每个 PC 由表“PC”中的代码唯一指定,其特征在于型号(外键引用产品表)、速度(处理器的 MHz)、RAM 总量 - ram(以 Mb 为单位)、硬盘驱动器容量 - hd(以 Gb 为单位)、CD ROM 速度 - cd(例如“4x”)和价格。

Laptop 表与其中一台 PC 类似,只是 CD ROM 速度不同,后者被屏幕尺寸 - 屏幕(以英寸为单位)所取代。对于表“打印机”中的每台打印机,它被告知打印机是否是彩色的(彩色打印机的颜色属性为“y”;否则为“n”)、打印机类型(激光、喷射或矩阵),以及价格。*

查找速度低于所有 PC 的笔记本电脑型号。结果集:类型、型号、速度。

我正在输入这样的查询:

SELECT 'Laptop', Laptop.model,
Laptop.speed FROM Laptop WHERE
Laptop.speed < All (SELECT speed FROM
PC)

它运行正确,但网站上说它对任何数据库都不是完全正确的:

请注意,仅当具有 laptop 类型的产品位于笔记本电脑 table 上时,此决定才有效。对于我们的数据库,这个条件是满足的,因为只有三种类型的产品,因此只有三个表。因此,违反此条件可能仅与重组有关,但是,在使用内置 SQL 查询开发应用程序时也应牢记这一点。

这是什么意思?我怎样才能改进我的查询?请解释一下!

最佳答案

这个数据库的结构在处理模型的方式上有点古怪; model 是 PRODUCTS 表的键。

查看此替代语法是否适用于您的数据库;它使用所谓的“内联 View ”将问题分解为更容易理解的更小步骤。

  1. 找出速度最慢的 PC:

        select min(speed) as SlowestSpeed from PC
  2. 找出比那只乌龟 PC 慢的笔记本电脑:

       select laptop.model, laptop.speed from laptop
    join
    (
    select min(speed) as SlowestSpeed from PC
    ) as MyTortoise
    where laptop.speed < MyTortoise.SlowestSpeed
  3. 获取那些速度较慢的笔记本电脑的型号信息:

      select PRODUCT.model, PRODUCT.type, SlowLaptops.speed
    from PRODUCT
    inner join
    (

    select laptop.model, laptop.speed from laptop
    join
    (
    select min(speed) as TheSlowest from PC
    ) as MyTortoise
    where laptop.speed < MyTortoise.SlowestSpeed

    ) as SlowLaptops

    on PRODUCT.model = SlowLaptops.model

关于sql - 改进 SQL 查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6235754/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com