我想弄清楚这个问题。
我需要在查询中加入大约4个表。 我有另一个Left联接,看看这些项是否在另一个表中关联,然后我需要对该结果进行JOIN以查看与之关联的广告系列。
问题在于某些交易有广告系列,有些则没有。
public class MainPage
{
private UIBindingProperties viewModel = new UIBindingProperties();
public MainPage()
{
BindingContext = viewModel;
}
public void SomeMethodInvokedLater()
{
viewModel.COBRO = "Completely different value than the initial one";
}
}
目标是,如果广告系列名称与广告系列相关联,或者只是一个空广告符号,则返回该广告系列名称。
我无法想出这个。 感谢。
答案 0 :(得分:0)
尝试使用像这样的子查询 -
SELECT
a.Applications,
a.Clicks,
isnull(a.Datacaptures,0) as Datacaptures,
a.Aggration_day,
a.MediaUsed_id,
a.mediatrackingid_fk,
a.tracking_type,
t.Tracking_info,
m.MediaName,
DATEPART(dayofyear, Aggration_day) AS DayofYear,
c.Title as Campaigntitle,
c.campaign_id,
i.title,
i.start_date,
i.end_date,
i.IO_number
FROM Aggeration_day a
JOIN tracking_types t
ON a.tracking_type = t.Tracking_type_id
JOIN MediaUsed m
ON m.media_used_id = a.MediaUsed_id
JOIN MediaTrackingItems i
ON a.mediatrackingid_fk = i.mediatrackingid
LEFT join (
Select ci.mediatrackingid,
c.Campaign_Id,
c.campaigntitle
FROM Campaign_items CI
JOIN Campaigns c
ON CI.campaign_id_fk = c.campaign_id
) ci
ON a.mediatrackingid_fk = CI.mediatrackingid_FK
答案 1 :(得分:0)
最简单的方法是"继续"使用左连接到任何依赖于原始左连接的表(参见下面的查询1)。
你也可以"筑巢"加入,虽然这不常用,并且在复杂查询中很难遵循(参见下面的查询2)。在此方法中,内部联接到广告系列在应用左连接条件之前形成派生表,这些条件已放置在内部联接之后(是,令人困惑!)。
或者你可以形成自己的派生表"通过使用子查询,并加入该子查询(请参阅下面的查询3)。这比使用查询2中看到的嵌套连接更容易理解。
查看在SQL Fiddle
运行的这些查询架构设置:
CREATE TABLE Campaigns (`id` int, `Title` varchar(14));
INSERT INTO Campaigns (`id`, `Title`)
VALUES (1, 'First Campaign')
;
CREATE TABLE Campaign_items (`id` int, `campaign_id` int, `media_fk` int);
INSERT INTO Campaign_items (`id`, `campaign_id`, `media_fk`)
VALUES
(201, 1, 3001),
(202, 1, 4001)
;
CREATE TABLE Media (`media_id` int);
INSERT INTO Media (`media_id`)
VALUES
(3001),
(4001),
(5001)
;
查询1 :
select
a.media_id, ci.campaign_id, c.Title
from media a
left join Campaign_items ci on a.media_id = ci.media_fk
left join Campaigns c on ci.campaign_id = c.id
<强> Results 强>:
| media_id | campaign_id | Title |
|----------|-------------|----------------|
| 3001 | 1 | First Campaign |
| 4001 | 1 | First Campaign |
| 5001 | (null) | (null) |
查询2 :
select
a.media_id, ci.campaign_id, c.Title
from media a
left join Campaign_items ci
inner join Campaigns c on ci.campaign_id = c.id
on a.media_id = ci.media_fk
<强> Results 强>:
| media_id | campaign_id | Title |
|----------|-------------|----------------|
| 3001 | 1 | First Campaign |
| 4001 | 1 | First Campaign |
| 5001 | (null) | (null) |
查询3 :
select
a.media_id, ci.campaign_id, ci.Title
from media a
left join (
select ci.*, c.title
from Campaign_items ci
inner join Campaigns c on ci.campaign_id = c.id
) ci on a.media_id = ci.media_fk
<强> Results 强>
| media_id | campaign_id | Title |
|----------|-------------|----------------|
| 3001 | 1 | First Campaign |
| 4001 | 1 | First Campaign |
| 5001 | (null) | (null) |