当前位置: 代码迷 >> Sql Server >> 用SQL语句实现解决方案
  详细解决方案

用SQL语句实现解决方案

热度:7   发布时间:2016-04-27 13:24:19.0
用SQL语句实现
题目:设有如下关系数据库,供应商表S,零件表P,工程项目表J,供应情况表SPJ(某供应商供应某种零件给某工程项目的零件数量为 QTY):
供应商表S: SNO SNAME CITY
  S1 大连机床厂 大连
  S2 北京机床厂 北京
  …… …… ……

 零件表P: PNO PNAME COLOR WEIGHT
  P1 螺母 红色 12
  P2 螺栓 蓝色 17
  …… …… …… ……

工业项目表J: JNO JNAME CITY
  J1 不夜城 大连
  J2 长春火车站 长春
  …… …… ……

供应情况表SPJ: SNO PNO JNO QTY
  S1 P1 J1 200
  S1 P1 J3 100
  …… …… …… ……
 
用 SQL 语言实现以下操作:
   
  求至少使用了全部红色零件的工程编号及名称


------解决方案--------------------
SQL code
--> 测试数据:[S1]if object_id('[S1]') is not null drop table [S1]create table [S1]([SNO] varchar(2),[SNAME] varchar(10),[CITY] varchar(4))insert [S1]select 'S1','大连机床厂','大连' union allselect 'S2','北京机床厂','北京'--> 测试数据:[P2]if object_id('[P2]') is not null drop table [P2]create table [P2]([PNO] varchar(2),[PNAME] varchar(4),[COLOR] varchar(4),[WEIGHT] int)insert [P2]select 'P1','螺母','红色',12 union allselect 'P2','螺栓','蓝色',17--> 测试数据:[J3]if object_id('[J3]') is not null drop table [J3]create table [J3]([JNO] varchar(2),[JNAME] varchar(10),[CITY] varchar(4))insert [J3]select 'J1','不夜城','大连' union allselect 'J2','长春火车站','长春'--> 测试数据:[SPJ]if object_id('[SPJ]') is not null drop table [SPJ]create table [SPJ]([SNO] varchar(2),[PNO] varchar(2),[JNO] varchar(2),[QTY] int)insert [SPJ]select 'S1','P1','J1',200 union allselect 'S1','P1','J3',100select JNO,JNAME from( select d.*,c.PNO,c.PNAME,c.COLOR from [SPJ] a inner join [P2] c on a.PNO=c.PNOinner join [J3] d on a.JNO=d.JNOwhere c.COLOR='红色')t group by JNO,JNAMEhaving COUNT(1)=(select COUNT(1) from [P2] where COLOR='红色')/*JNO    JNAMEJ1    不夜城*/
  相关解决方案