现有钢网信息表,还有一张生产明细表,一张产品表,生产明细表里有每天每个产品的生产数,而这生产数又是钢网的使用次数,目前生产明细表里没有可以关联钢网明细表的字段,业务也不允许在生产明细表里添加字段,一个钢网可以多个机种使用,而一个机种也有多个钢网,也有的一个机种只对应一个钢网,机种还有的在不同线上生产,某一天这个机种生产的总数等于两个钢网在同时生产,如果我想得到该机种当天使用哪个钢网生产了多少然后对应的钢网的使用次数,,如果需要求出每个钢网的使用次数该怎么求,也有的一个机种只对应一个钢网,如果需要求出每个钢网的使用次数用sql server 怎么做
时间: 2023-09-15 11:20:37 浏览: 71
sql多表关联查询--按照文本例子即可
钢网使用情况可以通过关联生产明细表和钢网信息表来获得。具体步骤如下:
1. 首先,使用以下 SQL 语句创建一个用于模拟的钢网信息表:
```sql
CREATE TABLE SteelNetInfo (
SteelNetID INT,
SteelNetName VARCHAR(50),
PRIMARY KEY (SteelNetID)
);
```
2. 然后,使用以下 SQL 语句创建一个用于模拟的生产明细表:
```sql
CREATE TABLE ProductionDetail (
ProductID INT,
ProductionDate DATE,
ProductionCount INT,
PRIMARY KEY (ProductID, ProductionDate)
);
```
3. 接下来,使用以下 SQL 语句创建一个用于模拟的产品表:
```sql
CREATE TABLE Product (
ProductID INT,
SteelNetID INT,
PRIMARY KEY (ProductID),
FOREIGN KEY (SteelNetID) REFERENCES SteelNetInfo(SteelNetID)
);
```
4. 然后,使用以下 SQL 语句向这些表中插入一些示例数据:
```sql
INSERT INTO SteelNetInfo VALUES (1, 'SteelNet A');
INSERT INTO SteelNetInfo VALUES (2, 'SteelNet B');
INSERT INTO ProductionDetail VALUES (1, '2021-01-01', 10);
INSERT INTO ProductionDetail VALUES (2, '2021-01-01', 15);
INSERT INTO Product VALUES (1, 1);
INSERT INTO Product VALUES (2, 2);
```
5. 最后,使用以下 SQL 语句查询出每个产品在每个日期使用的钢网名称和使用次数:
```sql
SELECT ProductID, ProductionDate, SteelNetName, ProductionCount
FROM ProductionDetail
INNER JOIN Product ON ProductionDetail.ProductID = Product.ProductID
INNER JOIN SteelNetInfo ON Product.SteelNetID = SteelNetInfo.SteelNetID;
```
6. 如果需要求出每个钢网的使用次数,可以使用以下 SQL 语句:
```sql
SELECT SteelNetID, SteelNetName, SUM(ProductionCount) AS TotalCount
FROM ProductionDetail
INNER JOIN Product ON ProductionDetail.ProductID = Product.ProductID
INNER JOIN SteelNetInfo ON Product.SteelNetID = SteelNetInfo.SteelNetID
GROUP BY SteelNetID, SteelNetName;
```
这样就可以得到每个钢网的使用情况了。需要注意的是,由于生产明细表里没有可以关联钢网明细表的字段,这里是通过将生产明细表和产品表关联来获取每个产品所使用的钢网信息的。
阅读全文