Я новичок в этом портале.У меня очень простая проблема, которую нужно решить.Это связано с ANSI SQL.Я пишу отчеты, используя BIRT, и извлекаю данные из нескольких таблиц.Я понимаю, как работают объединения SQL, но, возможно, не полностью.Я исследовал Google в течение нескольких часов, и я не мог найти соответствующий ответ.
Моя проблема в том, что одно из отношений в коде приводит к дублированию результата (одна и та же строка копируется - дублируется).Я был так полон решимости решить эту проблему, что использовал все доступные типы соединений.Часть этого SQL уже была произведена.Я опубликую свой код ниже.Я знаю, что одним из решений моей проблемы является использование ключевого слова 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
.Я знаю, что моя проблема довольно специфична и не носит общего характера, но решение, которое кто-то предложит, может помочь другим с подобной проблемой.