首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >为外键选择不同的值

为外键选择不同的值
EN

Stack Overflow用户
提问于 2018-06-03 00:45:16
回答 1查看 31关注 0票数 0

我有两张桌子:

代码语言:javascript
运行
复制
Products(..., category_id)
Categories(id, name, level_1_parent_id, level_2_parent_id)

category_idCategories(id)的外键

如果它的一级类别level_1_parent_id为空,

如果二级分类level_2_parent_id为空,则设置level_1_parent_id

如果同时设置了第三级和第三级。

我选择这样的产品

代码语言:javascript
运行
复制
SELECT *
FROM Products
WHERE category_id = ${category_id}

我需要实现:选择产品从子类别,如果它的第一或第二级类别。

例如,如果我使用id == 1从类别中选择(这是第一级id),我希望选择category_id等于1的产品,使用level_1_parent_id == 1选择其他类别,第二级类别也是如此。

这有没有可能呢?

EN

Stack Overflow用户

发布于 2018-06-03 01:37:55

您首先通过将表连接到自身来获得类别列表,然后获取与找到的每个类别相关联的产品。注意,from和join子句中的每个表都使用了别名。

代码语言:javascript
运行
复制
SELECT *
FROM Categories c1
LEFT JOIN Categories c2
    ON c2.level_1_parent_id = c1.id
LEFT JOIN Categories c3
    ON c3.level_1_parent_id = c1.id AND c3.level_2_parent_id = c2.id
JOIN Products p
    ON p.category_id = c1.id OR p.category_id = c2.id OR p.category_id = c3.id
WHERE c1.category_id = ${category_id}
票数 0
EN
查看全部 1 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/50659087

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档