设有一个工程供应数据库系统,包括如下四个关 系 S(SNO, SNAME, STATUS, CITY); P(PNO, PNAME, COLOR, WEIGHT); J(JNO, JNAME, CITY); SPJ(SNO, PNO, JNO, QTY); 供应商表S由供应商号、供应商名称、状态、城市组成; 零件表P由零件号、零件名称、颜色、重量组成; 工程项目表J由项目号、项目名称、城市组成; 供应情况表SPJ由供应商号、零件号、项目号、供应数 量组成:用mysql查询没有使用天津供应商生产的零件的项目号
时间: 2024-03-08 22:49:52 浏览: 272
可以使用以下 SQL 语句查询:
```
SELECT DISTINCT SPJ.JNO
FROM SPJ
WHERE SPJ.PNO NOT IN (
SELECT DISTINCT SPJ.PNO
FROM SPJ
JOIN S ON SPJ.SNO = S.SNO
WHERE S.CITY = '天津'
)
```
解释一下这个 SQL 查询语句:
- 首先我们从 SPJ 表中查询所有的项目号 JNO,并使用 DISTINCT 去除重复的结果。
- 然后我们在 WHERE 子句中添加一个条件:SPJ.PNO NOT IN (...),其中 (...) 是一个子查询,用来查询所有使用了天津供应商生产的零件号 PNO。
- 在子查询中,我们首先查询所有供应商表 S 中城市为天津的供应商的编号(即 S.SNO),然后使用 JOIN 将其与供应情况表 SPJ 进行连接,得到所有使用了这些供应商的零件号(即 SPJ.PNO)。
- 最后我们在 NOT IN 子句中使用这个子查询的结果,去除了使用了天津供应商生产的零件号 PNO,得到了没有使用天津供应商生产的零件的项目号 JNO。
相关问题
设有一个SPJ数据库,包括S,P,J,SPJ四个关系模式: S( SNO,SNAME,STATUS,CITY); P(PNO,PNAME,COLOR,WEIGHT); J(JNO,JNAME,CITY); SPJ(SNO,PNO,JNO,QTY);
这个SPJ数据库包含4个关系模式,分别是S、P、J和SPJ。
S模式包括以下属性:
- SNO:供应商编号
- SNAME:供应商名称
- STATUS:供应商状态
- CITY:供应商所在城市
P模式包括以下属性:
- PNO:零件编号
- PNAME:零件名称
- COLOR:零件颜色
- WEIGHT:零件重量
J模式包括以下属性:
- JNO:工程编号
- JNAME:工程名称
- CITY:工程所在城市
SPJ模式包括以下属性:
- SNO:供应商编号
- PNO:零件编号
- JNO:工程编号
- QTY:供应商提供的零件数量
设有一个SPJ数据库,包括S,P,J,SPJ四个关系模式: S( SNO,SNAME,STATUS,CITY); P(PNO,PNAME,COLOR,WEIGHT); J(JNO,JNAME,CITY); SPJ(SNO,PNO,JNO,QTY);
这是一个典型的关系型数据库,其中有三个实体(供应商、零件、工程)和一个关系(供应商-零件-工程关系)。每个实体都有自己的属性,例如供应商有编号、名称、状态和城市等;零件有编号、名称、颜色和重量等;工程有编号、名称和城市等。关系则包括供应商编号、零件编号、工程编号和数量。
这个数据库可以用来管理供应商、零件和工程之间的关系,例如某个供应商可以提供某种零件给某个工程使用,而且还可以记录这种零件的数量。通过对这些数据的分析,我们可以了解哪些供应商提供了哪些零件给哪些工程,以及每个供应商提供的零件数量和价格等信息。这对于企业的供应链管理非常重要。
阅读全文