2016-12-09 4 views
1
SELECT 
    p.Requestor AS Requestor, 
    p.AdjAmtOrd AS Amount_Ordered, 
    p.Vendor_Name AS Vendor, 
    p.Item_Description AS Item, 
    p.Project AS Project, 
    s.car_number, 
    p.PO_Year AS PO_Year, 
    p.AcctType AS Account_Type, 
    p.budget_sublines, 
    s.car_type, 
    s.requester, 
    s.fbn 
FROM 
    Redshift_PO_Report p 
INNER JOIN Redshift_MCL s ON p.Project = s.car_number 
WHERE 
    s.car_type LIKE 'Datacenter or Room Build - Leased%' 
AND p.AcctType = 'CapEx%' 
AND s.controls > '0' 
AND p.Item_Description LIKE '%BMS%' 
OR p.Item_Description LIKE '%EPMS%' 
AND p.budget_sublines IN ('BMS', 'EPMS'); 

Das Problem ist, dass es Zeilen mit etwas anderem als zurückkehrt ‚Datacenter ...‘ in der car_type, etwas anderes als CapEx in AcctType (OPEX in diesem Fall). Der Rest scheint gut zu funktionieren.MySQL Query verhält sich nicht wie erwartet

Warum macht es das?

+2

Klammern Ausgabe. – 1000111

Antwort

2

Ich glaube, Ihr Problem AND und OR verwendet.

Try this:

... 
AND (p.Item_Description LIKE '%BMS%' OR p.Item_Description LIKE '%EPMS%') 
AND ... 

In Ihrem bestimmten Code, es entweder, dass alle Bedingungen vor dem „oder“ um wahr zu sein, oder alle Bedingungen nach dem „oder“ wahr zu sein. Daher können die ersten Bedingungen falsch sein, wie Sie gerade erfahren, solange alles nach "oder" wahr ist.

+0

Dies liefert jetzt keine Ergebnisse. – Shenanigator

+0

@us Ich kenne Ihre Daten nicht. Ist es möglich, dass keine Dateneingabe alle Anforderungen erfüllt? Oder sind Sie zuversichtlich, dass es Ergebnisse geben sollte? – Michel

+0

Ich reparierte es, es war nicht deine Veränderung, es war eine andere von mir, die ich vergessen habe. Das funktioniert jetzt. – Shenanigator

2

ändern

AND p.Item_Description LIKE '%BMS%' 
     OR p.Item_Description LIKE '%EPMS%' 

für

AND (p.Item_Description LIKE '%BMS%' 
     OR p.Item_Description LIKE '%EPMS%') 
Verwandte Themen