【背景】:一家手机制造公司想要评估不同供应商提供的零部件质量和成本情况。 【原始表】: suppliers(供应商)表: supplier_id (供应商 ID): 供应商的唯一标识符 supplier_name (供应商名称): 供应商的名称 contact_info (联系方式): 供应商的联系信息 components(零部件)表: component_id (零部件 ID): 零部件的唯一标识符 component_name (零部件名称): 零部件的名称 supply_quality_cost(供应质量成本)表: supply_id (供应 ID): 供应的唯一标识符 supplier_id (供应商 ID): 供应商的唯一标识符,用于关联供应商表中的供应商 component_id (零部件 ID): 零部件的唯一标识符,用于关联零部件表中的零部件 quality_score (质量评分): 零部件的质量评分 cost (成本): 零部件的成本 【要求】:根据上面这三个表格,查询出每个供应商提供的质量评分高于 80 且成本低于 50 的零部件名称、质量评分和成本,包含的字段:供应商 ID、供应商名称、零部件名称、质量评分、成本。查询出来的数据先按照供应商 ID 升序排列,再按照成本升序排列。要求查询出来的表格的字段如下: supplier_id: 供应商的唯一标识符。 supplier_name: 供应商的名称。 component_name: 零部件名称。 quality_score: 质量评分。 cost: 成本。 【示例】: suppliers(供应商)表: components(零部件)表: supply_quality_cost(供应质量成本)表: 【按要求查询出来的表】 【解释】:上述表中供应商A相关的供应质量成本信息有关的零部件有component_id 1、3、4,其中component_id是4的零部件质量评分高于80但是成本高于50所以查询出来的结果不展示,component_id是1和3两个零部件均符合质量评分高于 80 且成本低于 50 ,所以查询后展示出来
示例1

输入

DROP TABLE IF EXISTS suppliers;
DROP TABLE IF EXISTS components;
DROP TABLE IF EXISTS supply_quality_cost;
-- 创建表
CREATE TABLE suppliers (
    supplier_id INT PRIMARY KEY,
    supplier_name VARCHAR(50),
    contact_info VARCHAR(100)
);

CREATE TABLE components (
    component_id INT PRIMARY KEY,
    component_name VARCHAR(50)
);

CREATE TABLE supply_quality_cost (
    supply_id INT PRIMARY KEY,
    supplier_id INT,
    component_id INT,
    quality_score INT,
    cost DECIMAL(10, 2)
);

-- 插入数据
INSERT INTO suppliers (supplier_id, supplier_name, contact_info)
VALUES (1, '供应商 A', '电话 A'),
       (2, '供应商 B', '电话 B');

INSERT INTO components (component_id, component_name)
VALUES (1, '屏幕'),
       (2, '电池'),
       (3, '摄像头'),
       (4, '听筒');

INSERT INTO supply_quality_cost (supply_id, supplier_id, component_id, quality_score, cost)
VALUES (1, 1, 1, 90, 40),
       (2, 2, 2, 75, 60),
       (3, 1, 3, 85, 30),
       (4, 1, 4, 85, 60);

select * from suppliers;
select * from components;
select * from supply_quality_cost;

输出

supplier_id|supplier_name|component_name|quality_score|cost
1|供应商 A|摄像头|85|30.00
1|供应商 A|屏幕|90|40.00
加载中...