SQL select 三个 table 中的至少两个不同值连接在一起

SQL select at least two distinct values from three table joined togther

我需要一些帮助。

我的任务是找到在两个或更多不同机构工作并且是文档作者的唯一用户。任何用户都可以在同一机构多次工作。

我试过这个查询,它似乎有效,但并不return我所期望的

SELECT 
    usr_users.id,
    usr_users.first_name, 
    usr_users.last_name, 
    usr_users.code,
    cls_institutions.short_name
FROM 
    elaba.usr_users, 
    elaba.usr_user_occupations, 
    elaba.cls_institutions, 
    elaba.doc_documents, 
    elaba.doc_document_authors
WHERE 
    usr_user_occupations.user_id = usr_users.id AND
    cls_institutions.id = usr_user_occupations.institution_id AND
    doc_documents.id = doc_document_authors.document_id AND
    doc_document_authors.user_id = usr_users.id
GROUP BY 
    usr_users.id, cls_institutions.short_name
HAVING
    COUNT(cls_institutions.short_name) > 2

这个查询return也是在一个机构工作的那些用户,这是结果:

1:  52150;"Thomas";"Johnes";"University"
2:  52150;"Thomas";"Johnes";"College"
3:  52182;"Aligi";"Miqit";"University"
4:  52182;"Aligi";"Miqit";"College"
5:  52182;"Aligi";"Miqit";"ConstructionCo"
6:  52191;"Chris";"Steven";"University"
7:  52219;"Ally";"Jones";"University"
8:  52238;"Elly";"Gee";"University"
9:  52238;"Elly";"Gee";"ConstructionCo"
10: 52254;"Luigi";"Vasili";"ConstructionCo"
11: 52254;"Luigi";"Vasili";"University"

第6、7行只有一个工作地点的用户

我做错了什么?

最好的答案是有一个用户列表,最后一列显示他们在哪个机构工作...

或者更简单的解决方案是显示仅因机构而异的重复用户。

使用正确的连接方法并计算在 having 子句中。

SELECT u.id, u.first_name, u.last_name, u.code, i.short_name
FROM elaba.usr_users u
INNER JOIN elaba.usr_user_occupations uo ON u.id = uo.user_id 
INNER JOIN elaba.cls_institutions i ON uo.institution_id = i.id
INNER JOIN elaba.doc_document_authors da ON u.id = da.user_id 
INNER JOIN elaba.doc_documents d ON da.document_id = d.id
GROUP BY u.id, i.short_name
HAVING COUNT(*) >= 2