簡體   English   中英

iReport中的SQL Join語句

[英]SQL Join statement in iReport

我正在制作一份報告,該報告應該在我們的“WO”(workOrder表)和“SO”(salesOrder表)中顯示“PART”及其數量。 我相信我有格式化和其他一切已經完成,但由於任何原因我似乎無法通過我的連接語句得到我的邏輯。

我的邏輯基於 - 選擇PART_NUMBER顯示WO和SO中該部分的數量。 然后,它為SO和WO添加總列數,然后生成每個列的總計。

我是SQL的新手,已經在這個報告上工作了4天,似乎無法讓它工作。 我假設我的JOINS已關閉或某事。 任何可以提供的幫助將不勝感激!


SELECT
 COALESCE(woitem.qtytarget,0) AS woallocated,
 COALESCE(soitem.qtyfulfilled,0) AS soallocated,
 PART."NUM" AS PART_NUM,
 WO."NUM" AS WO_NUM,
 PART."ID" AS PART_ID,
 WO."ID" AS WO_ID,
 PART."DESCRIPTION" AS PART_DESCRIPTION,
 SO."ID" AS SO_ID,
 SO."NUM" AS SO_NUM,
 WOITEM."ID" AS WOITEM_ID,
 WOITEM."QTYTARGET" AS WOITEM_QTYTARGET,
 SOITEM."ID" AS SOITEM_ID,
 SOITEM."QTYFULFILLED" AS SOITEM_QTYFULFILLED,
 WOITEM."WOID" AS WOITEM_WOID,
 WOITEM."PARTID" AS WOITEM_PARTID,
 COMPANY."ID" AS COMPANY_ID,
 COMPANY."NAME" AS COMPANY_NAME
FROM
 "PART" PART
 INNER JOIN "WO" WO ON PART."ID" = WO."ID"
 INNER JOIN "SO" SO ON PART."ID" = SO."ID"
 INNER JOIN "WOITEM" WOITEM ON PART."ID" = WOITEM."PARTID"
 AND WO."ID" = WOITEM."WOID"
 INNER JOIN "SOITEM" SOITEM ON SO."ID" = SOITEM."SOID",
 "COMPANY" COMPANY
WHERE
 PART."NUM"=$P{partNum}

我是SQL的新手,感謝我的邏輯中的任何幫助!

SQL代碼

報告查詢設計

報告設計視圖

嘗試使用這個..你正在嘗試內部連接表並不真正相關所以你得到重復...創建2個查詢並使用UNION ALL聯合它們

SELECT
 COALESCE(woitem.qtytarget,0) AS woallocated,
 0 AS soallocated,
 PART."NUM" AS PART_NUM,
 WO."NUM" AS WO_NUM,
 PART."ID" AS PART_ID,
 WO."ID" AS WO_ID,
 PART."DESCRIPTION" AS PART_DESCRIPTION,
 NULL AS SO_ID,
 NULL AS SO_NUM,
 WOITEM."ID" AS WOITEM_ID,
 WOITEM."QTYTARGET" AS WOITEM_QTYTARGET,
 NULL AS SOITEM_ID,
 0 AS SOITEM_QTYFULFILLED,
 WOITEM."WOID" AS WOITEM_WOID,
 WOITEM."PARTID" AS WOITEM_PARTID,
 COMPANY."ID" AS COMPANY_ID,
 COMPANY."NAME" AS COMPANY_NAME
FROM
 "PART" PART
 INNER JOIN "WOITEM" WOITEM ON PART."ID" = WOITEM."PARTID"
 INNER JOIN "WO" WO ON WOITEM."WOID" = WO."ID",
 "COMPANY" COMPANY
WHERE
 PART."NUM"=$P{partNum}

UNION ALL

SELECT
 0 AS woallocated,
 COALESCE(soitem.qtyfulfilled,0) AS soallocated,
 PART."NUM" AS PART_NUM,
 NULL AS WO_NUM,
 PART."ID" AS PART_ID,
 NULL AS WO_ID,
 PART."DESCRIPTION" AS PART_DESCRIPTION,
 SO."ID" AS SO_ID,
 SO."NUM" AS SO_NUM,
 NULL AS WOITEM_ID,
 0 AS WOITEM_QTYTARGET,
 SOITEM."ID" AS SOITEM_ID,
 SOITEM."QTYFULFILLED" AS SOITEM_QTYFULFILLED,
 NULL AS WOITEM_WOID,
 NULL AS WOITEM_PARTID,
 COMPANY."ID" AS COMPANY_ID,
 COMPANY."NAME" AS COMPANY_NAME
FROM
 "PART" PART
 INNER JOIN "PRODUCT" P ON PART."ID" = P."PARTID"
 INNER JOIN "SOITEM" SOITEM ON P."ID" = SOITEM."PRODUCTID"
 INNER JOIN "SO" SO ON SOITEM."SOID" = SO."ID",
 "COMPANY" COMPANY
WHERE
 PART."NUM"=$P{partNum} 

在第一個查詢中僅選擇WO項目,然后將其加入SO項目。對於WO項目,SO字段將為空,反之亦然

SELECT
 COALESCE(woitem.qtytarget,0) AS woallocated,
 COALESCE(soitem.qtyfulfilled,0) AS soallocated,
 PART.`NUM` AS PART_NUM,
 WO.`NUM` AS WO_NUM,
 PART.`ID` AS PART_ID,
 WO.`ID` AS WO_ID,
 PART.`DESCRIPTION` AS PART_DESCRIPTION,
 SO.`ID` AS SO_ID,
 SO.`NUM` AS SO_NUM,
 WOITEM.`ID` AS WOITEM_ID,
 WOITEM.`QTYTARGET` AS WOITEM_QTYTARGET,
 SOITEM.`ID` AS SOITEM_ID,
 SOITEM.`QTYFULFILLED` AS SOITEM_QTYFULFILLED,
 WOITEM.`WOID` AS WOITEM_WOID,
 WOITEM.`PARTID` AS WOITEM_PARTID,
 COMPANY.`ID` AS COMPANY_ID,
 COMPANY.`NAME` AS COMPANY_NAME
FROM
 `PART` PART
 INNER JOIN `WO` WO ON PART.`ID` = WO.`ID`
 INNER JOIN `SO` SO ON PART.`ID` = SO.`ID`
 INNER JOIN `WOITEM` WOITEM ON PART.`ID` = WOITEM.`PARTID`
 AND WO.`ID` = WOITEM.`WOID`
 INNER JOIN `SOITEM` SOITEM ON SO.`ID` = SOITEM.`SOID`,
 `COMPANY` COMPANY
WHERE
 PART.`NUM`=$P{partNum}

如果是語法錯誤,請使用```而不是"

希望這可以幫助

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM