Оператор SQL с OR не показывает оба случая - PullRequest
0 голосов
/ 02 декабря 2018

Я узнал об ошибке в моем приложении, когда оператор sql не отображает правильный результат.Я не хочу каждую транзакцию из таблицы, которая перешла от ИЛИ к определенному iban:

 SELECT *
 FROM BANKING.TRANSTAB                                                            
 WHERE ABSENDER = 'DE71419330598239161300'                                    
         OR EMPF = 'DE71419330598239161300'                                           
         AND                                                                          
         TIME BETWEEN TO_DATE('2018-10','YYYY-MM')                                    
         AND TO_DATE('2018-12','YYYY-MM');                                            
------+---------+---------+---------+---------+---------+---------+---------+---------+---
  ROW_ID  ABSENDER                EMPF                                     SUMME  ZWECK   
------+---------+---------+---------+---------+---------+---------+---------+---------+---
      98  DE71419330598239161300  DE38820942858809256538                   10.45  test    
      99  DE71419330598239161300  DE38820942858809256538                   23.42  test    
     102  DE71419330598239161300  DE38820942858809256538                   12.00  123     
     103  DE71419330598239161300  DE38820942858809256538                   12.00  12      
     104  DE71419330598239161300  DE38820942858809256538                   12.00  123     
     105  DE71419330598239161300  DE38820942858809256538                  123.00  123     

В настоящее время он просто отображает транзакции, которые пришли с выбранного iban, хотя правда в том, что есть также входящие транзакции:

 106  DE38820942858809256538  DE71419330598239161300                    1.00  spufitest     
 107  DE38820942858809256538  DE71419330598239161300                    1.00  Spufitest     
 108  DE38820942858809256538  DE71419330598239161300                    1.00  spufgitest    

1 Ответ

0 голосов
/ 02 декабря 2018

Если вы используете ИЛИ, вам нужно использовать в скобках все условия ИЛИ.

SELECT * FROM BANKING.TRANSTAB                                                            
     WHERE (ABSENDER = 'DE71419330598239161300'                                    
     OR EMPF = 'DE71419330598239161300')
     AND                                                                          
     TIME BETWEEN TO_DATE('2018-10','YYYY-MM')                                    
     AND TO_DATE('2018-12','YYYY-MM');  
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...