我正在尝试向现有报告添加一些额外信息,SQL查询要求我添加引用额外表的INNER JOIN。
我不是SQL大师,只知道基础知识,所以我很想找到我在这个查询中创建语法错误。
在比较当前工作代码(左侧)和错误代码(右)的图片下方 - 我得到的错误是'FROM子句中的语法错误
任何人都可以看看这个并告诉我在哪里引入语法错误?
不确定是否有帮助,但这是错误的代码:
SELECT ToolLists.Ident,
ToolLists.Descript AS TLDescript,
ToolLists.MaterialNr,
ToolLists.Order,
ToolLists.Who,
ToolLists.NCP,
ToolLists.Rem AS TLRem,
ToolLists.MDate,
ToolLists.TDate,
ToolLists.GDate,
ToolList.T,
Machines.Name AS MachineName,
Machines.TRelation,
ToolList.D,
ToolList.H,
ToolList.Pos AS ToolListPos,
ToolList.Rem AS ToolListRem,
ToolList.How AS ToolListHow,
Tools.Nr,
Tools.Z1,
Tools.Drawing,
Tools.X1,
Tools.Sort,
Tools.Design,
Tools.Descript,
Tools.Rem AS ToolRem,
ToolParts.Pos AS ToolPartPos,
ToolParts.Nbr,
ToolParts.How,
Parts.UNr,
Parts.MID,
Parts.Descript,
Parts.Sort,
Parts.Design,
Parts.URem,
Parts.DMC,
Parts.CLength,
Parts.CMainArc,
Parts.CRadius,
Parts.UActiv,
MatClasses.DMC,
MatClasses.Description,
MatClasses.Quality,
NoteParts.NoteText,
SP.Place
FROM (Parts
RIGHT JOIN ((Machines
RIGHT JOIN ((MatClasses
RIGHT JOIN (Materials
RIGHT JOIN ((SELECT ID,
Param1
FROM WTDIDList
WHERE WTGUID = '8c68ba58-5ad5-4a13-9bd4-0c4d1109d7c8'
)
AS IDList
INNER JOIN ToolLists
ON IDList.ID =
ToolLists.Nr)
ON Materials.Nr =
ToolLists.MaterialNr)
ON MatClasses.Nr = Materials.MatClassNr)
INNER JOIN (Tools
INNER JOIN ToolList
ON Tools.Nr =
ToolList.ToolNr)
ON ToolLists.Nr = ToolList.ToolListNr)
ON Machines.Nr = ToolLists.MachineNr)
INNER JOIN ToolParts
ON Tools.Nr = ToolParts.ToolNr)
ON Parts.ID = ToolParts.PartID)
INNER JOIN NoteParts
ON ToolParts.PartID = NoteParts.Nr)
ON Parts.ID = ToolParts.PartID)
LEFT JOIN (SELECT PartId, Place FROM SiteParts WHERE SiteNr = 1) AS SP ON SP.PartId = Parts.Id
ORDER BY ToolLists.Nr,
ToolList.Pos,
ToolList.T;
答案 0 :(得分:0)
看起来很多或没有足够的结束括号。我已经格式化了一下,认为这是你想要完成的。这应该摆脱语法错误。希望它能返回您正在寻找的结果。
- 更改SELECT *实际的select语句。
SELECT *
FROM (Parts
RIGHT JOIN (
(Machines
RIGHT JOIN (
(MatClasses
RIGHT JOIN (Materials
RIGHT JOIN (
(SELECT ID, Param1 FROM WTDIDList WHERE WTGUID = '8c68ba58-5ad5-4a13-9bd4-0c4d1109d7c8' ) AS IDList
INNER JOIN ToolLists ON IDList.ID = ToolLists.Nr
)
ON Materials.Nr = ToolLists.MaterialNr
)
ON MatClasses.Nr = Materials.MatClassNr
)
INNER JOIN (Tools
INNER JOIN ToolList
ON Tools.Nr = ToolList.ToolNr
)
ON ToolLists.Nr = ToolList.ToolListNr
)
ON Machines.Nr = ToolLists.MachineNr
)
INNER JOIN ToolParts
ON Tools.Nr = ToolParts.ToolNr
)
INNER JOIN NoteParts
ON ToolParts.PartID = NoteParts.Nr
ON Parts.ID = ToolParts.PartID
)
LEFT JOIN (SELECT PartId, Place FROM SiteParts WHERE SiteNr = 1) AS SP ON SP.PartId = Parts.Id
答案 1 :(得分:0)
此部分为红色正常
NoteParts.NoteText,
如果你与整个FROM子句一起分析它,太多的结束标记")"这部分有一个错误的sintax。错误的位置,重复的ON等。
INNER JOIN NoteParts
ON ToolParts.PartID = NoteParts.Nr)
ON Parts.ID = ToolParts.PartID)
我修改了这部分,所以它应该适合你
SELECT * FROM (Parts
RIGHT JOIN ((Machines
RIGHT JOIN ((MatClasses
RIGHT JOIN (Materials
RIGHT JOIN ((SELECT ID,
Param1
FROM WTDIDList
WHERE WTGUID = '8c68ba58-5ad5-4a13-9bd4-0c4d1109d7c8'
)
AS IDList
INNER JOIN ToolLists
ON IDList.ID =
ToolLists.Nr)
ON Materials.Nr =
ToolLists.MaterialNr)
ON MatClasses.Nr = Materials.MatClassNr)
INNER JOIN (Tools
INNER JOIN ToolList
ON Tools.Nr =
ToolList.ToolNr)
ON ToolLists.Nr = ToolList.ToolListNr)
ON Machines.Nr = ToolLists.MachineNr)
INNER JOIN ToolParts ON Tools.Nr = ToolParts.ToolNr
INNER JOIN NoteParts ON ToolParts.PartID = NoteParts.Nr)
ON Parts.ID = ToolParts.PartID)
LEFT JOIN (SELECT PartId, Place FROM SiteParts WHERE SiteNr = 1) AS SP ON SP.PartId = Parts.Id
ORDER BY ToolLists.Nr,
ToolList.Pos,
ToolList.T;
在这里你有完整的查询,所以只需复制粘贴。
SELECT ToolLists.Ident,
ToolLists.Descript AS TLDescript,
ToolLists.MaterialNr,
ToolLists.Order,
ToolLists.Who,
ToolLists.NCP,
ToolLists.Rem AS TLRem,
ToolLists.MDate,
ToolLists.TDate,
ToolLists.GDate,
ToolList.T,
Machines.Name AS MachineName,
Machines.TRelation,
ToolList.D,
ToolList.H,
ToolList.Pos AS ToolListPos,
ToolList.Rem AS ToolListRem,
ToolList.How AS ToolListHow,
Tools.Nr,
Tools.Z1,
Tools.Drawing,
Tools.X1,
Tools.Sort,
Tools.Design,
Tools.Descript,
Tools.Rem AS ToolRem,
ToolParts.Pos AS ToolPartPos,
ToolParts.Nbr,
ToolParts.How,
Parts.UNr,
Parts.MID,
Parts.Descript,
Parts.Sort,
Parts.Design,
Parts.URem,
Parts.DMC,
Parts.CLength,
Parts.CMainArc,
Parts.CRadius,
Parts.UActiv,
MatClasses.DMC,
MatClasses.Description,
MatClasses.Quality,
NoteParts.NoteText,
SP.Place
FROM (Parts
RIGHT JOIN ((Machines
RIGHT JOIN ((MatClasses
RIGHT JOIN (Materials
RIGHT JOIN ((SELECT ID,
Param1
FROM WTDIDList
WHERE WTGUID = '8c68ba58-5ad5-4a13-9bd4-0c4d1109d7c8'
)
AS IDList
INNER JOIN ToolLists
ON IDList.ID =
ToolLists.Nr)
ON Materials.Nr =
ToolLists.MaterialNr)
ON MatClasses.Nr = Materials.MatClassNr)
INNER JOIN (Tools
INNER JOIN ToolList
ON Tools.Nr =
ToolList.ToolNr)
ON ToolLists.Nr = ToolList.ToolListNr)
ON Machines.Nr = ToolLists.MachineNr)
INNER JOIN ToolParts ON Tools.Nr = ToolParts.ToolNr
INNER JOIN NoteParts ON ToolParts.PartID = NoteParts.Nr)
ON Parts.ID = ToolParts.PartID)
LEFT JOIN (SELECT PartId, Place FROM SiteParts WHERE SiteNr = 1) AS SP ON SP.PartId = Parts.Id
ORDER BY ToolLists.Nr,
ToolList.Pos,
ToolList.T;