SalesForce中的几个表之间的SQL查询

时间:2013-02-19 21:31:00

标签: sql sql-server salesforce

我正在尝试获取的问题是 -

“我想知道受营销广告系列影响的商机何时与帐户相关联。账户中可能有多个联系人 因此,如果任何联系人与广告系列(广告系列的成员)相关联 - 请告诉我(或那些)联系人所连接的帐户, 如果有与该帐户关联的商机, 如果有与该帐户关联的商机,则在联系人与广告系列“

相关联后创建商机

我无法弄清楚逻辑。我是SQL的新手。任何帮助将不胜感激。

我正在使用SQL Server 2012

我有来自SalesForce数据库的5个相关表 -

帐户表(PK ID,OpportunityID),商机表(PK ID,AccountID),联系表(PK ID,AccountID),广告系列表(PK ID,ContactID,ParentID),CampaignMember表(PK ID,ContactID,CampaignID) )

此链接提供SalesForce数据模型 http://www.salesforce.com/us/developer/docs/api/Content/sforce_api_erd_majors.htm

这是我提出的,但它没有返回任何行。

SELECT O.CreatedDate OppCreatedDate
,o.Name as OpportunityName
,a.Name AccountName
,c.Name as ContactName
,ca.Name as CampaignName
,o.Amount_Software
,o.CreatedDate
FROM Opportunity o
INNER JOIN Account a on a.Id = o.AccountID 
LEFT JOIN  Contact c ON c.AccountId = a.Id
INNER JOIN CampaignMember cm ON cm.CampaignID  = c.ID
INNER JOIN Campaign ca ON ca.ID = cm.CampaignID
LEFT JOIN Campaign ca2 ON ca2.ID = ca.ParentID
WHERE o.CreatedDate > cm.CreatedDate
ORDER BY AccountName DESC;

谢谢。

1 个答案:

答案 0 :(得分:1)

你在LEFT JOIN上运行INNER JOIN,这是不明确的。

机会< - >账户
帐户 - >联系
广告系列成员< - >联系(由于上面一行,这应该是左连接)
广告系列成员< - >广告系列(由于上面的第二行,这应该是左连接)
广告系列 - >运动

此处的视觉效果在此处(您无法将新表格内连接到左连接表格):

GOOD:
INNER JOIN< - > INNER JOIN - > LEFT JOIN - > LEFT JOIN

BAD:
INNER JOIN< - > INNER JOIN - > LEFT JOIN - > INNER JOIN