是否可以在没有“产品”(column1xcolumn2)的情况下并排显示没有直接关系的2列?
检查一下。 http://sqlfiddle.com/#!3/212b6/1
我正在尝试创建一个查询,以最少的重复字段显示所有group_id,网站和历史记录。我有3个表 - 组,网站和历史,但它显示了笛卡尔加入。如果我有4个网站和1个组的3个历史记录。它显示12条记录。我想要这样的东西:
group_id | website | History
1 website1 hist1
1 website2 hist2
1 website3 hist3
答案 0 :(得分:1)
您可以使用row_number()
分配行号,在大多数数据库中执行此操作。这是ANSI标准功能。接近你想要的东西:
select g.group_id, w.website, h.ma_history
from (select g.*, row_number() over (order by group_id) as seqnum
from tbl_group g
) g full outer join
(select w.*, row_number() over (order by website) as seqnum
from table_website w
) w
on g.seqnum = w.seqnum full outer join
(select h.*, row_number() over (order by ma_history) as seqnum
from table_ma_history h
) h
on h.seqnum = coalesce(g.seqnum, w.seqnum)
与所需表示的不同之处在于,“缺失”值不会从一行复制到下一行。相反,它们表示为NULL。以你的例子:
group_id | website | History
1 website1 hist1
NULL website2 hist2
NULL website3 hist3
既然你说“类似”,这是否足够接近?根据数据库的不同,复制值会更容易或更难。