编写一个sql语句,查询所有职工都参与的项目,结果返回项目编号pno。
时间: 2023-03-30 20:02:26 浏览: 152
我可以回答这个问题。SQL语句如下:
SELECT pno FROM 参与表 GROUP BY pno HAVING COUNT(DISTINCT eno) = (SELECT COUNT(DISTINCT eno) FROM 参与表);
其中,参与表是一个包含职工编号(eno)和项目编号(pno)的表。这个SQL语句会返回所有职工都参与的项目编号。
相关问题
mysql为三建工程项目建立一个供应情况视图,包括Sno,Pno,Qty。
好的,根据您的要求,MySQL 为三建工程项目建立一个供应情况视图,包括 `Sno`、`Pno`、`Qty` 的 SQL 语句如下:
```
CREATE VIEW supply_view AS
SELECT s.Sno, sp.Pno, sp.Qty
FROM supplier s
JOIN supply sp ON s.Sno = sp.Sno
WHERE sp.Project = '三建工程';
```
该视图将会返回 `Project` 字段为 “三建工程” 的所有供应情况,包括供应商编号 `Sno`、零件编号 `Pno` 和供应数量 `Qty` 等字段。其中,`supplier` 表存储供应商信息,包括供应商编号 `Sno` 和供应商名称 `Sname` 等字段;`supply` 表存储供应信息,包括供应商编号 `Sno`、零件编号 `Pno`、供应数量 `Qty` 和供应工程项目 `Project` 等字段。
创建一个QuerySPJ的存储过程,根据用户提供的工程项目代码查询该工程项目的使用零件情况,并返回使用零件的总数量。
好的,以下是根据您的要求编写的QuerySPJ存储过程的代码:
```sql
CREATE PROCEDURE QuerySPJ
@ProjectCode varchar(50)
AS
BEGIN
SET NOCOUNT ON;
SELECT SUM(QTY) AS TotalQty
FROM SPJ
WHERE PNO IN (
SELECT PNO
FROM P
WHERE P.PROJECT_CODE = @ProjectCode
)
END
```
该存储过程接受一个名为@ProjectCode的输入参数,用于指定要查询的工程项目代码。在查询过程中,我们首先在P表中查询与指定工程项目代码相匹配的PNO,然后将这些PNO用于在SPJ表中查找相应的零件使用情况。最后,我们使用SUM函数计算使用零件的总数量,并将其作为输出返回。
请注意,此存储过程假定SPJ表中存储的是零件使用情况的详细信息,包括所属工程项目的PNO。如果SPJ表中存储的不是这种详细信息,则需要相应地修改查询语句。