【问题标题】:Select categories and sub-categories from the same table从同一个表中选择类别和子类别
【发布时间】:2015-11-25 13:57:03
【问题描述】:

我看到了一个数据库场景,我必须在其中检索单个表中的产品及其包。 注意: 层次结构只是一层,例如 Package1 => Cola。 Package2 => 薯条,汉堡。 Package3 => 咖啡等,即两列

我有三个表:Products、Core、Hierarchy。

Products 存放产品和包含其他产品的包装。

Core 指定它是包装还是散装产品。

层次结构指定包 ID

如何选择所有包及其产品,以便所有产品按其父/包分组? (即两列)

期望的输出:

【问题讨论】:

  • 毫无疑问,您使用递归 CTE,然后将产品表与最终 CTE 连接起来。抛出一些示例数据,然后我可以向您展示如何。还提到期望输出。
  • 你从哪里得到Coffe??你的桌子设计让我很生气。
  • 如果您阅读说明,您将看到“咖啡等”。有没有。表中的虚拟数据不受限制。
  • 我正在查看您的表格,但无法获取您的层次结构。您有 3 作为 2 的父级 - Package2 是 Cola 的父级。那么为什么在你的输出中 Packege2 有薯条和汉堡而不是可乐呢?
  • 而Package1是它自己的父级? (按层次结构表中的第一行)。

标签: sql-server select join categories


【解决方案1】:

这是简单的连接,因为您只有 1 级层次结构:

select p2.Name as Package, 
       p1.Name as [Product(Loose)]
from Hierarchy h
join Products p1 on h.ID = p1.ID
join Products p2 on h.ParentID = p2.ID

【讨论】:

  • 你的意思可能是h.ParentID = p2.ID在第二次加入@GiorgiNakeuri
  • 您的查询返回相同的列值。没有层次结构或分组产品。
  • @Jnr,在发布之前请检查解决方案.... sqlfiddle.com/#!3/9eecb7d/475 这是小提琴。输出如你所愿
  • 对不起,我在编辑之前使用了代码片段。谢谢@GiorgiNakeuri 它有效!
猜你喜欢
  • 1970-01-01
  • 2022-01-05
  • 2017-07-10
  • 2013-01-26
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-08-28
  • 2015-02-15
相关资源
最近更新 更多