得到5张这样的表:
demande : id,agent, service,...
tache: id, demande, agent, service...
agent: id,...
service, id,...
lien_sa: id, agent, service,..
代理可以使用lien_sa
拥有多个服务demande在tache表中使用demande列可以有多个tache。
我需要一个查询来列出(不同)链接到代理商服务的“demande”:我的意思是“demande”的“服务”是在“代理商”服务列表中还是“demande”具有“tache”,其“服务”在“代理人”服务列表中。
我做到了:
SELECT demande FROM demande d RIGHT JOIN tache t ON t.demande = d.demande
AND ((servref IN ( "<agent's service list>")
OR t.service IN ("<agent's service list>"))
正在运行,但没有返回“demande”而没有“tache”链接。
需要保持连接(或其他),因为使用叠加查询,结果非常长...
有办法吗?
感谢您的帮助。
EDIT
我终于找到了办法:
SELECT demande FROM demande d LEFT JOIN tache t ON t.demande = d.demande WHERE t.demande IS NULL
UNION DISTINCT
SELECT demande FROM demande d LEFT JOIN tache t ON t.demande = d.demande WHERE t.demande IS NOT NULL
但是对于真相,我不确定UNION ALL或UNION DISTINCT