2017-07-22 2 views
0

Ich versuche, die Datensätze aufzulisten, die meine Bedingung erfüllt. Da ich AND und OR Operator zusammen benutze bekomme ich nicht den genauen Bericht. Hier ist meine AbfrageMit OR, AND-Operator in einer einzigen Abfrage

SELECT o.sales_order_id AS SID, o.reference, o.status, o.last_modified, sol.sales_order_id, sol.item, sol.quantity, sol.selling_price, sol.discount, sol.tax, SUM(sol.tax_amount) AS Tamt, SUM(sol.total) as Total, i.iid, GROUP_CONCAT(DISTINCT i.name) AS iname, l.company, t.tax_id, t.name as tname, t.rate from orders o INNER JOIN before_order_line_items sol ON o.sales_order_id = sol.sales_order_id INNER JOIN leads l ON o.company_id=l.id INNER JOIN items i ON sol.item=i.iid INNER JOIN taxes t ON sol.tax=t.tax_id WHERE o.order_quote='Order' AND o.authorise='Yes' OR o.assigned_to=6 OR o.user_id=6 GROUP BY o.sales_order_id ORDER BY o.sales_order_id DESC

ich beide Aufträge und Angebote in einzelnen Tabelle am Speicherung Orders, für Aufträge i speichern Sie es als Order in order_quote Spalte, für Zitate ist es Quote

Es ist nicht order_quote='Order' prüft Bedingung, es zeigt sowohl Bestellungen und Angebote.

Wenn ich OR o.assigned_to=6 OR o.user_id=6 entferne, gibt es das richtige Ergebnis.

habe ich versucht, wie diese Arbeit

SELECT DISTINCT o.order_quote=`Order`, ..... 

Aber does't DISTINCT verwenden.

SELECT o.sales_order_id AS SID, o.reference, o.status, o.last_modified, sol.sales_order_id, sol.item, sol.quantity, sol.selling_price, sol.discount, sol.tax, SUM(sol.tax_amount) AS Tamt, SUM(sol.total) as Total, i.iid, GROUP_CONCAT(DISTINCT i.name) AS iname, l.company, t.tax_id, t.name as tname, t.rate from orders o INNER JOIN before_order_line_items sol ON o.sales_order_id = sol.sales_order_id INNER JOIN leads l ON o.company_id=l.id INNER JOIN items i ON sol.item=i.iid INNER JOIN taxes t ON sol.tax=t.tax_id WHERE (o.order_quote='Order' AND o.authorise='Yes') AND (o.assigned_to=6 OR o.user_id=6) GROUP BY o.sales_order_id ORDER BY o.sales_order_id DESC 
+0

hinzufügen Klammern zu 'und',' OR' Zustand, wie '(o.authorise = 'Ja' OR o.assigned_to = 6)' –

+0

nicht Sir Arbeits – user3368088

+0

gut Ich meinte nicht den genauen Zustand. Sie müssen geschweifte Klammern gemäß Ihrer logischen Bedingung hinzufügen, wie in der folgenden Antwort erwähnt –

Antwort

1

Sie müssen Klammern verwenden AKTUALISIERT. Ich bin nicht sicher, wie genau, aber Ihre aktuelle where Klausel wird interpretiert als:

WHERE (o.order_quote = 'Order' AND o.authorise = 'Yes') OR 
     (o.assigned_to = 6) OR 
     (o.user_id = 6) 

Ich würde vermuten, dass Sie so etwas wie dies wollen:

WHERE (o.order_quote = 'Order' AND o.authorise = 'Yes') AND 
     (o.assigned_to = 6 OR o.user_id = 6) 

Aber das ist reine Spekulation.

Oder vielleicht:

WHERE (o.order_quote = 'Order' AND 
     (o.authorise = 'Yes' OR o.assigned_to = 6 OR o.user_id = 6) 
+0

Ja, ich möchte so. Aber selbst wenn ich Klammern als zweite Anweisung verwende, bekomme ich kein Ergebnis, leere Ergebnismenge. Ich habe meine Abfrage über – user3368088

+0

aktualisiert. Funktioniert nicht für Klammern 'WHERE (o.order_quote = 'Order' UND (o.authorise = 'Ja' ODER o.assigned_to = 6 OR o.user_id = 6) ' – user3368088

Verwandte Themen