1

私のコードでは、特定の部品番号に関するデータを取得する必要があります。コードを次のように実行すると、奇妙な問題が発生しました。

SELECT 
                tblensembleunepiece.ENSPIECEID,
                tblensembleunepiece.NOPIECE As 'Part Number', 
                tblensembleunepiece.DESCRIPTIONENSP As 'Description', 
                tblensembleunepiece.QTEMIN As 'Min',
                tblensembleunepiece.QTEMAX As 'Max',
                tbltypepiece.TITRETYPE, 
                case 
                                when CONSOMMABLE='true' Then 'Consumeable'
                                else 'Rotable' end As 'Utilization',
                sum(tblitem.NBPOURPACK) As 'Serviceable',
                sum(case when tblquarantaine.BER = 'false' Then 1 else 0 END ) As 'Quarantine Repairable',
                sum(case when tblquarantaine.BER = 'true' Then 1 else 0 end) As 'Quarantine BER/Scrap',
                sum(case when tblbonsortieitem.VAREVENIR = 'true' Then 1 else 0 end) As 'Repair Line',

    sum(case when (tblhistorique.REMARQUE LIKE "Added to operation cost%" OR tblhistorique.REMARQUE LIKE "Added to operational cost%")
        then (substring_index( LTRIM(substring_index(tblhistorique.REMARQUE, 'Qty:', -1)), '.', 1)+0)
        when (tblhistorique.REMARQUE LIKE "Removed from operation cost%" OR tblhistorique.REMARQUE LIKE "Removed from operational cost%") 
        then (substring_index( LTRIM(substring_index(tblhistorique.REMARQUE, 'Qty:', -1)), ' ', 1)*(-1))  else 0 end)
FROM 
                tblensembleunepiece
                JOIN tbltypepiece ON tblensembleunepiece.TYPEPIECEID = tbltypepiece.TYPEPIECEID
                JOIN tblitem ON tblensembleunepiece.ENSPIECEID = tblitem.ENSPIECEID
                LEFT OUTER JOIN tblquarantaine ON tblquarantaine.ITEMID = tblitem.ITEMID 
                LEFT OUTER JOIN tblbonsortieitem ON tblbonsortieitem.ITEMID = tblitem.ITEMID
                LEFT OUTER JOIN tblhistorique ON tblhistorique.ITEMID = tblitem.ITEMID 
WHERE 
                tblensembleunepiece.NOPIECE<>'' 

GROUP BY tblensembleunepiece.ENSPIECEID;

次に、誤ったデータを取得します。ただし、SELECT 句に最後の sum ステートメントを追加し、FROM 句に最後の LEFT OUTER JOIN を追加する前は、すべて正常に機能していました。

Serviceable 列は、余分なコードが追加されたときにエラーが発生する列であり、必要な値の 4 倍の値を出力しています (すべての値ではなく、ほとんどの値)。

LEFT OUTER JOINS をさらに追加すると、以前の列が変更される可能性はありますか?

4

1 に答える 1