このポータルは初めてです。解決すべき非常に単純な問題があります。これは ANSI SQL に関連しています。BIRT を使用してレポートを作成しており、複数のテーブルからデータを取得しています。SQL 結合がどのように機能するかは理解していますが、完全ではないかもしれません。私は何時間もグーグルを調査しましたが、関連する答えが見つかりませんでした。
私の問題は、コード内の関係の 1 つが重複した結果を生成することです (同じ行がコピーされます - 重複します)。私はそれを解決しようと決心し、利用可能なすべてのタイプの結合を使用しました。この SQL の一部は既に作成されています。以下にコードを掲載します。私の問題に対する解決策の 1 つは、'DISTINCT' キーワードを使用することです。私はそれを使用しましたが、私の問題は解決しません。
誰でもそれに対する解決策を提案できますか?
サンプルコード:
SELECT DISTINCT
partmaster.partdesc,
partmaster.uom,
traders.name AS tradername,
worksorders.id AS worksorderno,
worksorders.partid,
worksorders.quantity,
worksorders.duedate,
worksorders.traderid,
worksorders.orderid,
routingoperations.partid,
routingoperations.methodid,
routingoperations.operationnumber,
routingoperations.workcentreid,
routingoperations.settime,
routingoperations.runtime,
routingoperations.perquantity,
routingoperations.description,
routingoperations.alternativeoperation,
routingoperations.alternativeoperationpreference,
machines.macdesc,
machines.msection,
allpartmaster.partnum,
allpartmaster.nbq,
allpartmaster.partdesc,
routingoperationtools.toolid,
tools.tooldesc,
CAST (emediadetails.data as VARCHAR(MAX)) AS cplandata
FROM worksorders
INNER JOIN partmaster ON worksorders.partid = partmaster.partnum
INNER JOIN traders traders ON worksorders.traderid = traders.id
INNER JOIN routingoperations routingoperations ON worksorders.partid = routingoperations.partid
AND worksorders.routingmethod = routingoperations.methodid
INNER JOIN allpartmaster allpartmaster ON routingoperations.partid = allpartmaster.partnum
LEFT OUTER JOIN machines machines ON routingoperations.workcentreid = machines.macid
LEFT OUTER JOIN routingoperationtools routingoperationtools ON routingoperationtools.partid = routingoperations.partid
AND routingoperationtools.routingmethod = routingoperations.methodid
AND routingoperationtools.operationnumber = routingoperations.operationnumber
LEFT OUTER JOIN tools tools ON tools.toolid = routingoperationtools.toolid
LEFT OUTER JOIN emediadetails ON emediadetails.keyvalue1 = worksorders.id
AND emediadetails.keyvalue2 = routingoperations.operationnumber
AND emediadetails.emediaid = 'worksorderoperation'
テストデータはあまりありませんが、DISTINCTキーワードを使用した場合でも、以下のクエリの結果として1行が2回コピーされることがわかっています。私の問題はかなり具体的で一般的ではないことを知っていますが、誰かが提案する解決策は、同様の問題を抱えている他の人を助けるかもしれません.