【发布时间】:2015-09-09 15:11:31
【问题描述】:
我有一张表 (product),其中列出了所有产品。我有另一个表 (product_buddy),它是依赖关系的映射。
我已经设置了一个简单的SQLFiddle
在小提琴中,有 3 种产品:foo、bar、baz。 product_buddy 中还有一行,其中 baz 是 foo 的依赖项。所以如果我SELECT foo,我希望它也能返回 baz。但是如果我SELECT bar,它没有依赖关系,所以它应该只返回 bar。与 baz 相同,它没有依赖项,因此它应该只返回自身。在这个小提琴中只有 foo 应该返回两行。
连接只会将其连接成一行,这不是我想要的,我想要两行,每个产品的代码和名称字段。当我说两行时,如果我SELECT foo,由于依赖关系,它应该返回 foo 行和 baz 行:
# SQL without missing join/binding of dependency:
SELECT code,name FROM product WHERE product.code = "foo";
| code | name |
|------|-------------|
| foo | Foo Product |
| baz | Baz Product |
如果我这样做,结果是一样的:
SELECT code,name FROM product WHERE product.code IN ("foo", "baz");
但我不提前知道依赖关系。我需要 SQL 来找出依赖关系。我可以编辑 product_buddy 表,product 表需要保持不变。
【问题讨论】:
-
你能发布你想要的结果吗?
-
即使建议使用 SqlFiddle 来帮助描述问题,您也应该尝试在此处提供大部分信息,以防外部链接丢失。
-
添加了一个示例响应,当我检索 foo 产品时,由于
product_buddy表中定义的依赖关系,我需要它返回 foo 和 baz 行。