私のコードでは、特定の部品番号に関するデータを取得する必要があります。コードを次のように実行すると、奇妙な問題が発生しました。
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 をさらに追加すると、以前の列が変更される可能性はありますか?