Помощь с несколькими предложениями WHERE, чтобы пользователь мог выполнять поиск, не мешая друг другу в пути - PullRequest
0 голосов
/ 12 февраля 2020

У меня есть простой код ниже

SELECT
      c.account,
      c.apar_id,
      c.amount,
      c.client,
      c.dim_2,
      c.dim_7,
      c.due_date,
      c.ext_inv_ref,
      c.period,
      c.voucher_date,
      c.voucher_no,
      c.voucher_type,
      c.sequence_no,
      c.rest_amount
      FROM acutrans c
      LEFT OUTER JOIN aglrelvalue r6
      ON r6.client = 'WEBE' AND r6.attribute_id = 'A4' AND r6.rel_attr_id = 'ZG06' AND c.apar_id = r6.att_value

      WHERE 
      c.client = 'WEBE' 
      AND c.period <='202007'
      AND (c.apar_id IS NULL OR c.apar_id ='CL25791') 
      OR (r6.rel_value IS NULL OR r6.rel_value ='*')
      AND (c.dim_7 IS NULL OR c.dim_7 >='') 
      AND (c.dim_7 IS NULL OR c.dim_7 <='BR36')

Пользователи хотят иметь возможность поиска данных по: c .apar_id r6.rel_value c .dim_7

I Похоже на тестирование, чтобы получить смесь данных, которые не соответствуют друг другу. Ваша помощь очень ценится, спасибо

1 Ответ

0 голосов
/ 12 февраля 2020

Вам нужны скобки (в общем), когда вы смешиваете AND и OR. Я могу только строить догадки о том, что вы действительно хотите, но что-то вроде:

WHERE c.client = 'WEBE' AND
      c.period <= '202007' AND
      (c.apar_id IS NULL OR c.apar_id = 'CL25791')  AND
      ((r6.rel_value IS NULL OR r6.rel_value = '*') AND
       (c.dim_7 IS NULL OR c.dim_7 >= '') AND
       (c.dim_7 IS NULL OR c.dim_7 <= 'BR36')
      )
...