我有两张桌子 发布商和广告系列都与国家/地区,区域,语言和类别具有相似的多对多关系。
更多信息
Publisher2ategories具有publisherID和categoryID,它们是发布者中publisherID的外键,属于标识列的类别中的categoryID。另一方面,我有Campaigns2ategories,其中包含campaignID和categoryID列,这些列是广告系列中campaignID的外键,而类别中的categoryID又是身份。 区域,语言和国家关系也是如此
如何从区域,国家/地区,语言或类别获取至少有一个与发布商(我传递给查询发布商ID)的广告系列的广告系列ID?
DB DIAGRAM http://img227.imageshack.us/img227/7264/64255522.png
感谢
答案 0 :(得分:1)
JOINING
来自发布商和广告系列的每个单独的多表格和UNION
结果应该通过其中一个相应的关系表为您留下所有在发布商和营地之间匹配的广告系列。
SELECT cc.CampaignID
FROM dbo.PublisherSites2Countries pc
INNER JOIN dbo.Campaings2Countries cc ON cc.CountryID = pc.CountryID
UNION SELECT pr.CampaignID
FROM dbo.PublisherSites2Regions pr
INNER JOIN dbo.Campaings2Regions cr ON cr.RegionID = pr.RegionID
...
答案 1 :(得分:0)
您可能希望一次找到一个连接类型的关联广告系列和发布商,并将结果合并:
SELECT DISTINCT campaignID
FROM Campaigns2Countries c2cy
WHERE EXISTS (SELECT * FROM PublisherSites2Countries
WHERE countryID = c2cy.countryID
AND publisherID = :publisherID)
UNION
SELECT DISTINCT campaignID
FROM Campaigns2Categories c2cat
WHERE EXISTS (SELECT * FROM PublisherSites2Categories
WHERE categoryID = c2cat.categoryID
AND publisherID = :publisherID)
UNION
...