Sql 无法获得正确的查询
我试图查询一个学校项目,但我不知道它是如何工作的 我可能是内部连接有问题 这是我的问题 我需要从每个opdracht获得材料成本和人工成本 我已经准备好了一个问题,一个是人工成本,一个是材料成本 人工成本查询:Sql 无法获得正确的查询,sql,Sql,我试图查询一个学校项目,但我不知道它是如何工作的 我可能是内部连接有问题 这是我的问题 我需要从每个opdracht获得材料成本和人工成本 我已经准备好了一个问题,一个是人工成本,一个是材料成本 人工成本查询: USE [Vakgarage De Haas] SELECT o.opdrachtnr, o.kenteken, k.achternaam, CAST((t.uurtarief * op.tijdsduur) AS decimal (10,2)) AS arbeidskosten
USE [Vakgarage De Haas]
SELECT o.opdrachtnr, o.kenteken, k.achternaam, CAST((t.uurtarief * op.tijdsduur) AS decimal (10,2)) AS arbeidskosten
FROM OpdrachtTaak op
INNER JOIN Taak t
ON op.taaknr = t.taaknr
INNER JOIN Opdracht o
ON op.opdrachtnr = o.opdrachtnr
INNER JOIN auto a
ON o.kenteken = a.kenteken
INNER JOIN klant k
ON a.klantnr = k.klantnr
GROUP BY o.opdrachtnr, o.kenteken, k.achternaam, op.tijdsduur,t.uurtarief
结果:
**opdrachtnr** **kenteken** **achternaam** **arbeidskosten**
1 12-JS-PP Pieterse 20.00
1 12-JS-PP Pieterse 35.00
2 PP-AD-01 Boer 6.00
3 ZK-PL-42 Boer NULL
**opdrachtnr kenteken achternaam Materiaalkosten**
1 12-JS-PP Pieterse 60.00
1 12-JS-PP Pieterse 110.00
2 PP-AD-01 Boer 12.00
3 ZK-PL-42 Boer 220.00
物料成本查询:
USE [Vakgarage De Haas]
SELECT o.opdrachtnr, o.kenteken, k.achternaam, CAST((t.uurtarief * op.tijdsduur) AS decimal (10,2)) AS arbeidskosten
FROM OpdrachtTaak op
INNER JOIN Taak t
ON op.taaknr = t.taaknr
INNER JOIN Opdracht o
ON op.opdrachtnr = o.opdrachtnr
INNER JOIN auto a
ON o.kenteken = a.kenteken
INNER JOIN klant k
ON a.klantnr = k.klantnr
GROUP BY o.opdrachtnr, o.kenteken, k.achternaam, op.tijdsduur,t.uurtarief
使用[Vakgarage De Haas]
SELECT o.opdrachtnr, o.kenteken, k.achternaam, (art.prijs * oa.aantal) AS Materiaalkosten
FROM OpdrachtArtikel oa
INNER JOIN Artikel art
ON oa.artikelnr = art.artikelnr
INNER JOIN Opdracht o
ON oa.opdrachtnr = o.opdrachtnr
INNER JOIN auto a
ON o.kenteken = a.kenteken
INNER JOIN klant k
ON a.klantnr = k.klantnr
GROUP BY o.opdrachtnr, o.kenteken, k.achternaam, art.prijs, oa.aantal
结果:
**opdrachtnr** **kenteken** **achternaam** **arbeidskosten**
1 12-JS-PP Pieterse 20.00
1 12-JS-PP Pieterse 35.00
2 PP-AD-01 Boer 6.00
3 ZK-PL-42 Boer NULL
**opdrachtnr kenteken achternaam Materiaalkosten**
1 12-JS-PP Pieterse 60.00
1 12-JS-PP Pieterse 110.00
2 PP-AD-01 Boer 12.00
3 ZK-PL-42 Boer 220.00
但是当我尝试组合这两个查询时
使用此查询:
USE [Vakgarage De Haas]
SELECT o.opdrachtnr, o.kenteken, k.achternaam, CAST((t.uurtarief * ot.tijdsduur) AS decimal (10,2)) AS arbeidskosten, (art.prijs * oa.aantal) AS Materiaalkosten
FROM Opdracht o
INNER JOIN OpdrachtTaak ot
ON o.opdrachtnr = ot.opdrachtnr
INNER JOIN Taak t
ON ot.taaknr = t.taaknr
INNER JOIN OpdrachtArtikel oa
ON o.opdrachtnr = oa.opdrachtnr AND ot.opdrachtnr = oa.opdrachtnr
INNER JOIN Artikel art
ON oa.artikelnr = art.artikelnr
INNER JOIN Auto a
ON o.kenteken = a.kenteken
INNER JOIN Klant k
ON a.klantnr = k.klantnr
GROUP BY o.opdrachtnr, o.kenteken, t.uurtarief, ot.tijdsduur, art.prijs, oa.aantal, k.achternaam
这是我得到的结果:
opdrachtnr kenteken achternaam arbeidskosten Materiaalkosten
1 12-JS-PP Pieterse 35.00 60.00
1 12-JS-PP Pieterse 35.00 110.00
1 12-JS-PP Pieterse 20.00 60.00
1 12-JS-PP Pieterse 20.00 110.00
2 PP-AD-01 Boer 6.00 12.00
3 ZK-PL-42 Boer NULL 220.00
我想要的结果是:
opdrachtnr kenteken achternaam arbeidskosten Materiaalkosten
1 12-JS-PP Pieterse 20.00 60.00
1 12-JS-PP Pieterse 35.00 110.00
2 PP-AD-01 Boer 6.00 12.00
3 ZK-PL-42 Boer NULL 220.00
有人能帮我吗?试试使用工会
SELECT *
FROM
(
SELECT o.opdrachtnr, o.kenteken, k.achternaam, CAST((t.uurtarief * op.tijdsduur) AS decimal (10,2)) AS Materiaalkosten
FROM OpdrachtTaak op
INNER JOIN Taak t
ON op.taaknr = t.taaknr
INNER JOIN Opdracht o
ON op.opdrachtnr = o.opdrachtnr
INNER JOIN auto a
ON o.kenteken = a.kenteken
INNER JOIN klant k
ON a.klantnr = k.klantnr
GROUP BY o.opdrachtnr, o.kenteken, k.achternaam, op.tijdsduur,t.uurtarief
UNION
SELECT o.opdrachtnr, o.kenteken, k.achternaam, (art.prijs * oa.aantal) AS Materiaalkosten
FROM OpdrachtArtikel oa
INNER JOIN Artikel art
ON oa.artikelnr = art.artikelnr
INNER JOIN Opdracht o
ON oa.opdrachtnr = o.opdrachtnr
INNER JOIN auto a
ON o.kenteken = a.kenteken
INNER JOIN klant k
ON a.klantnr = k.klantnr
GROUP BY o.opdrachtnr, o.kenteken, k.achternaam, art.prijs, oa.aantal
) tmp
我尝试了不同的方法,但我得到了相同的结果,我看到了发生了什么。您是否尝试过简单地“联合”——将两个查询合并在一起?