MySql хитро условно в объединенных таблицах - PullRequest
0 голосов
/ 22 февраля 2020

В первой таблице есть несколько полей, но только PersonId представляет интерес. Вторая таблица имеет «PersEmId» и «PersEmGr».

mysql:

   select  a.PersonId, b.PersEmId, b.PersEmGR
       from PersonRepDb a left join PersEm b 
       on a.PersonId = b.PersEmId
    (conditions to be figured out)    

без каких-либо условий, вывод:

1   ABBOT.LE00  ABBOT.LE00  betty  
2   ABBOT.LE00  ABBOT.LE00  flutes  
3   ACKERBRO00      

, поэтому мы видим, что ABBOT.LE находится в двух группах 'betty' и 'flutes', тогда как ACKERBR000 не имеет групп.

Если условие: где PersEmGr = 'flutes', запрос возвращает только ABBOT.LE00, который верно.

Однако я хочу знать, кто не в "флейтах". Если условие является

where PersEmGr != 'flutes' OR PersEmGr  IS NULL

, запрос возвращает

1   ABBOT.LE00  ABBOT.LE00  betty <br>
2   ACKERBRO00      

ABBOT.LE00 появляется здесь, потому что, хотя он находится в «флейтах», он также находится в 'betty', которая заполняет часть условия! = 'flutes'.

Может кто-нибудь предложить способ написать условие, чтобы запрос выбирал всех, кто не находится в флейтах, независимо от того, находятся ли они в другой группе или нет.

1 Ответ

1 голос
/ 22 февраля 2020

Поместите условие в предложение ON.

select  a.PersonId, b.PersEmId, b.PersEmGR
from PersonRepDb a 
left join PersEm b on a.PersonId = b.PersEmId AND b.PersEmGR = 'flutes'
WHERE b.PersEmId IS NULL
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...