Mysql SQL中的递归查询

Mysql SQL中的递归查询,mysql,Mysql,问题:如果我想添加此功能,我应该如何修改我的数据库结构和查询:用户可以拥有“共享”仓库-拥有给定仓库\u权限的产品的仓库 用户[1]:仓库[1]具有产品-->仓库[1]的权限[1]用户[2]具有添加[1]的权限 用户[2]:能够通过添加[1]|仓库[2]“共享”权限[1]->用户[2]宽度添加[2]的仓库[2]权限[2]查看仓库[1] 用户[3]:可以看到仓库[2]加宽[1]*加宽[2] 如果要共享共享仓库,则递归开始 有什么想法吗 这将是一个外部连接。有两种类型:左侧外部联接和右侧外部联接


问题:如果我想添加此功能,我应该如何修改我的数据库结构和查询:用户可以拥有“共享”仓库-拥有给定仓库\u权限的产品的仓库

  • 用户[1]:仓库[1]具有产品-->仓库[1]的权限[1]用户[2]具有添加[1]的权限
  • 用户[2]:能够通过添加[1]|仓库[2]“共享”权限[1]->用户[2]宽度添加[2]的仓库[2]权限[2]查看仓库[1]
  • 用户[3]:可以看到仓库[2]加宽[1]*加宽[2]
如果要共享共享仓库,则递归开始

有什么想法吗

  • 这将是一个
    外部连接。有两种类型:
    左侧外部联接
    右侧外部联接
    。与
    内部
    关键字一样,
    外部
    关键字也是可选的。对于每个
    左连接
    都有一个逻辑上等价的
    右连接
    。因此,
    RIGHT JOIN
    s非常罕见。例如,比较
    左连接
    右连接
    的搜索结果,依此类推

  • 见上文


  • 我将合并仓库和仓库权限,仓库和权限类别将解决大多数问题。如果以后需要,您可以划分或提出其他结构

    我知道外部联接,但仍然不知道如何获得想要的结果
    SELECT 
        p.*, 
        MIN(wp.price * (1 + wpe.addition / 100) * (1 + IFNULL(wpc.addition, 0) / 100)) AS minimal_price,
        COUNT(p.id) AS total_found
    FROM products AS p
    JOIN warehouses_products AS wp
        ON p.id=wp.product_id
    JOIN warehouses_permissions AS wpe 
        ON wpe.warehouse_id=wp.warehouse_id
    LEFT JOIN warehouses_permissions_categories AS wpc 
        ON wpc.warehouse_permission_id=wpe.id
    WHERE wpe.user_id=1 AND (wpc.id IS NULL OR wpc.category_id=p.category_id)
    GROUP BY p.id