需要进行严重复杂的查询

时间:2014-05-13 13:33:23

标签: mysql

得到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

0 个答案:

没有答案