【问题标题】:MYSQL GET ALL PRODUCT FROM PARENT CATEGORY [duplicate]MYSQL从父类别中获取所有产品[重复]
【发布时间】:2019-12-16 15:29:32
【问题描述】:

我有桌子

TABLE CATEGORY
id | name | parent
1 | gadget | 0
2 | phone | 1
3 | laptop | 1
....

TABLE PRODUCT
id | name | cat
1 | post 1 | 2
2 | post 2 | 2
3 | post 3 | 3
....

我想按类别和子类别获取产品

显示小工具类别中的所有产品

我该怎么做?

【问题讨论】:

    标签: mysql sql database join left-join


    【解决方案1】:

    只有一级父/子关系(如您的示例数据所示),您可以自行加入category 表:

    select p.*, c.name, c1.name
    from product p
    inner join category c on c.id = p.cat
    left join category c1 on c1.id = c.parent
    

    【讨论】:

    • 如果我只有类别名称的值怎么样。
    • @wayanwahyuAdiPutra:如果您只想要'gadget'类别中的产品,您可以在查询末尾添加where子句:where c.name = 'gadget' or c1.name = 'gadget'
    • 我想要类别和子类别中的所有产品。一样吗?
    • @wayanwahyuAdiPutra:此 where 子句为您提供类别或子类别为 'gadget' 的产品。
    【解决方案2】:

    简单的方法,使用双重查询

    SELECT A.* FROM PRODUCT A
    INNER JOIN CATEGORY B ON A.CAT = B.ID
    WHERE B.ID = (SELECT ID FROM CATEGORY WHERE NAME = 'gadget') 
    OR B.PARENT= (SELECT ID FROM CATEGORY WHERE NAME = 'gadget')
    

    【讨论】:

    • 如果我只有类别名称的值。喜欢“小工具”我该怎么办?
    • 使用双重查询
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-09-03
    • 1970-01-01
    相关资源
    最近更新 更多