Tôi có dòng này trong truy vấn sql của tôi:truy vấn SQL mệnh đề where
WHERE client = $id
AND (isinvoiced = 0) OR (isinvoiced = 1 and isrecurring = 1)
mà nhận được kết quả hơn tôi mong đợi. Tuy nhiên, nếu tôi viết nó như thế này:
WHERE client = $id
AND (isinvoiced = 0) OR (isinvoiced = 1 and isrecurring = 1 and client = $id)
sau đó nó cho tôi kết quả tôi muốn, nhưng đây là cách tốt nhất để viết? Tôi chỉ không muốn chạy vào bất kỳ vấn đề nhiều hơn với mã này.
Google cho [Quy tắc ghi lại phân phối] (http://en.wikipedia.org/wiki/Distributivity). – onedaywhen
Bạn có chắc bạn hiểu sự khác biệt giữa 'a AND b OR c' và' a AND (b OR c) '? Ví dụ của bạn được viết rõ ràng hơn là '(a AND b) HOẶC c', không phải những gì bạn thực sự muốn. – MatBailie