内联3张表,if条件检索

Inner join 3 tables, retrieve if conditions

我有三张表

Person
- id
- other_fields

PersonTypes
- id 
- person_id
- type_id

PersonEmails
- id
- person_id
- email_address

如何只获取 PersonTypes.type_id 不同于 value 的电子邮件地址? 我正在使用 MariaDB v.10,我尝试在所有表中使用左外连接,然后 return 仅 type_id 不同的这些行。但是我不确定结果。

SELECT pe.email_address
FROM Person p
LEFT OUTER JOIN PersonTypes pt ON p.id = pt.person_id
LEFT OUTER JOIN PersonEmails pe ON p.id = pe.person_id
WHERE pt.type_id != 14;
select P1.id,
       P2.type_id, -- just for the sake of this output
       P2.email_address
from Person P1
inner join
    (
    select PT.person_id, PT.type_id, PE.email_address
    from PersonTypes PT
    inner join PersonEmails PE
      on PE.person_id = PT.person_id
    where PT.type_id <> 14
    ) P2
  on P2.person_id = P1.id

select pe.email_address
from PersonEmails pe
where person_id not in 
    (
    select person_id
    from PersonTypes
    where Type_id = 14
    )

查询选择所有没有 type_id 14 的人并加入 Person 和 PersonsEmails 表数据

SELECT pe.email_address
FROM PersonTypes pt
INNER JOIN Person p ON pt.person_id = p.id 
INNER JOIN PersonEmails pe ON pt.person_id = pe.person_id
WHERE pt.type_id != 14;