gpt4 book ai didi

mysql - 返回产品和产品依赖关系的 SQL

转载 作者:行者123 更新时间:2023-11-29 22:02:31 25 4
gpt4 key购买 nike

我有一个表(产品),其中列出了所有产品。我有另一个表 (product_buddy),它是依赖项的映射。

我设置了一个简单的 SQLFiddle

在fiddle中,有3个产品:foo、bar、baz。 product_buddy 中还有一行,其中 baz 是 foo 的依赖项。因此,如果我SELECT foo,我希望它也返回baz。但如果我SELECT bar,它没有依赖性,所以它应该只返回 bar。与 baz 相同,它没有依赖项,因此它应该返回自身。只有 foo 应该在这个 fiddle 中返回两行。

连接只会将其连接到一行中,这不是我想要的,我想要两行包含每个产品的代码和名称字段。当我说两行时,如果我 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 表需要保持不变。

最佳答案

SQL FIDDLE DEMO

SELECT
p.*
FROM product p
WHERE p.code = "foo"

UNION

SELECT
p.*
FROM product_buddy b
INNER JOIN product p
on b.buddy_code = p.code
WHERE b.product_code = "foo"

结果

id  code    name
1 foo Foo Product
3 baz Baz Product

关于mysql - 返回产品和产品依赖关系的 SQL,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32483306/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com