2

是否可以在没有“产品”(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
4

1 回答 1

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

既然您说“类似”,这是否足够接近?根据数据库,复制值更容易或更难。

于 2013-06-10T13:21:08.017 回答