在用于建设项目的CRM中,客户端,架构师和其他承包商都以ACCOUNT的形式存在。表PROJ_AC_LINK将ACCOUNT链接到PROJECT,并且字段PROJ_AC_LINK.ROLE_TYPE_ID指定该链接表示的内容(例如Joe Simms在角色'architect'下链接到项目101)。确定左加入中是否有多个记录
CRM数据库和用户界面允许用户将多个帐户链接到同一角色下的项目。在某些情况下,这没什么问题(项目有2位建筑师),但在某些情况下不是(应该只有一位客户为我们发票)。我无法更改CRM。
来自单独系统的查询试图获取SITE_ADDRESS和CLIENT_ADDRESS,并假定只有一个客户端链接到每个项目。它查询它像这样(205是角色“客户”的代码):
SELECT
PROJECT.ADDRESS AS SITE_ADDRESS,
ACCOUNT.ADDRESS AS CLIENT_ADDRESS
FROM PROJECT
LEFT JOIN PROJ_AC_LINK ON
(PROJ_AC_LINK.PROJECT_ID = PROJECT.PROJECT_ID
AND
PROJ_AC_LINK.ROLE_TYPE_ID = '205')
LEFT JOIN ACCOUNT ON PROJ_AC_LINK.ACCT_ID = ACCOUNT.ACCT_ID
如果没有客户端连接到一个项目,这个查询仍然会返回一个SITE_ADDRESS,但CLIENT_ADDRESS返回NULL,而这正是我想要的是。
使用该系统的人知道告诉CRM人员他们是否通过空白客户端地址。但是,我需要迎合有多个客户链接到一个项目的可能性。
有没有一种方法可以使CLIENT_ADDRESS返回NULL(或自定义文本),如果PROJ_AC_LINK中有多个记录为该角色的该项目。
任何想法?
我看到了这个想法,但实际上它与原始查询的做法相同:如果有2个帐户(如客户端),则返回2行。我认为子选择应该在链接表上,我不想尝试改变它... – andyhasit