我使用的是Ostendo,这是一个FirebirdSQL数据库。
我们有装配。每个程序集都包含一个标题和许多AssemblyLines。每个AssemblyLine可以包含0多个AssemblyLineProperty记录(每个ALP记录通常是属性描述和属性值。 例如,装配线可能具有两个属性:值为AB-01的图号和值为2的值 我可以在两行上运行一个显示图号和值属性的查询,但我希望它在一行上。 我可以通过在Excel中彼此相邻的两个表来实现我想要的,但这很笨拙,最终会导致问题,这将对业务产生巨大的成本影响。
表1 SQL:
SELECT
ASSEMBLYLINES.ORDERNUMBER,
ASSEMBLYLINES.LINECODE,
ASSEMBLYLINES.LINEDESCRIPTION AS "MATERIAL",
ASSEMBLYLINES.ORDERQTY,
ASSEMBLYLINEPROPS.PROPERTYVALUE AS "JOB QUANTITY"
FROM ASSEMBLYLINEPROPS ASSEMBLYLINEPROPS, ASSEMBLYLINES ASSEMBLYLINES
WHERE ASSEMBLYLINEPROPS.HEADERSYSUNIQUEID = ASSEMBLYLINES.SYSUNIQUEID AND ((ASSEMBLYLINES.ORDERNUMBER='16606R01')) AND (PROPERTYNAME = 'Job Quantity')
表2:
SELECT
ASSEMBLYLINEPROPS.PROPERTYVALUE AS "DRAWING NO."
FROM ASSEMBLYLINEPROPS , ASSEMBLYLINES
WHERE ASSEMBLYLINEPROPS.HEADERSYSUNIQUEID = ASSEMBLYLINES.SYSUNIQUEID AND ((ASSEMBLYLINES.ORDERNUMBER='16606R01') AND (ASSEMBLYLINEPROPS.PROPERTYNAME='Drawing No'))
如何将两个查询合并为一个结果,以使图号和数量出现在同一行。
我相信我需要做一些嵌套,而不是加入。任何答案,线索或提示都表示赞赏。
答案 0 :(得分:1)
您需要两次加入ASSEMBLYLINEPROPS表以获取每个属性的属性值。我正在使用LEFT join以确保您仍然拥有订单,以防其中一个属性丢失:
SELECT
ASSEMBLYLINES.ORDERNUMBER,
ASSEMBLYLINES.LINECODE,
ASSEMBLYLINES.LINEDESCRIPTION AS "MATERIAL",
ASSEMBLYLINES.ORDERQTY,
Q.PROPERTYVALUE AS "JOB QUANTITY",
D.PROPERTYVALUE AS "DRAWING NO."
FROM ASSEMBLYLINES LEFT JOIN ASSEMBLYLINEPROPS Q
ON Q.HEADERSYSUNIQUEID = ASSEMBLYLINES.SYSUNIQUEID AND Q.PROPERTYNAME = 'Job Quantity'
LEFT JOIN ASSEMBLYLINEPROPS D
ON D.HEADERSYSUNIQUEID = ASSEMBLYLINES.SYSUNIQUEID AND D.PROPERTYNAME = 'Drawing No'
WHERE ASSEMBLYLINES.ORDERNUMBER='16606R01'