У меня проблемы с пониманием того, почему мой оператор OR не дает желаемых результатов.
if ($result = $mysqli->query("SELECT
orderheader.ordernumber As Order_Number
, ccilog.orderid AS Order_ID
, orderheader.billingcontactfirstname AS Customer_Name
, orderheader.billingcontactlastname AS Customer_Surname
, orderheader.billingcustomeremailaddress AS Customer_Email
, orderheader.webbrandcode AS Brand_Code
, orderitems.productname AS Product_Name
, orderitems.qty AS Item_Qty
, orderheader.datecreated AS Order_Date
FROM orderheader
LEFT JOIN ccilog ON orderheader.id=ccilog.orderid
LEFT JOIN orderitems ON ccilog.orderid=orderitems.orderid
WHERE orderitems.status = '0'
AND orderheader.status != '1'
AND orderitems.webbrandcode = 'brand1' || orderitems.webbrandcode = 'brand2'
AND orderheader.billingcustomeremailaddress != 'email1@email.co.uk'
AND orderheader.billingcustomeremailaddress != 'email2@email.co.uk'
"))
Если удалить строку:
AND orderitems.webbrandcode = 'brand1' || orderitems.webbrandcode = 'brand2'
Мои результаты отображаются нормальнои мои правила работают с отображением Brand1, 2 и 3. Когда я добавляю вышеупомянутую строку, я ожидаю увидеть те же результаты, но без бренда 3. Brand 3 не показывает, что замечательно, но кажется, что теперь он перечисляет всебренд 2, а не только строки, в которых предыдущие утверждения статуса заказа верны.
Я не могу понять, почему мои результаты не просто возвращают 11 ожидаемых результатов (это возвращает 425), почти большинство результатов бренда 2.