【问题标题】:SQL (mysql) - SELECT distinct `products` FROM all PARENT USERSSQL (mysql) - 从所有父用户中选择不同的“产品”
【发布时间】:2017-01-04 21:44:54
【问题描述】:

我只需要在订单后按 ID 对产品进行分组,我认为这是很常见的事情,但每次我都遇到问题。

这是递归嵌套。

products

id
code
user_id
name

数据products

1 code1 1 product_user1_code1
2 code2 1 product_user1_code2
3 code3 1 product_user1_code3
4 code2 2 product_user2_code2
5 code1 3 product_user3_code1

user_nest

id
parent_id
delta_level

数据user_nest:

1 1 0
2 2 0
2 1 1
3 3 0
3 2 1
3 1 2

这意味着在用户嵌套之下:

  • 1
    • 2
      • 3

===

  • 用户有默认产品并且可以看到它
  • 用户可以更换产品
  • 用户可以邀请其他用户
  • 新用户必须看到产品的父用户更改最接近
  • 新用户可以执行与用户相同的操作 - 查看、更改、邀请

对于给定的示例,我希望得到 3 行:

product_user3_code1(由我编辑 id:3) product_user2_code2(由我的父母 id:2 编辑) product_user1_code3(由管理员 id:1 定义)

有人可以帮忙吗?

【问题讨论】:

  • 提供您预期的结果集
  • 伙计们,我认为我的任务通常是任务,对不起。好的,我只是再次尝试解释:用户拥有默认产品并且可以看到用户可以更改产品。用户可以邀请另一个用户。新用户必须看到产品有父用户更改新用户可以执行相同的操作,如用户 - 查看、更改、邀请

标签: php mysql sql-server


【解决方案1】:

你可以试试这个:-

SELECT max(t1.id), t1.code, t1.user_id, t2.id, t2.parent_id, t2.delta_level
FROM `user_nest` t1
INNER JOIN
`product` t2 ON t2.`user_id` = t1.`parent_id`
WHERE t1.`id` = 3
GROUP BY t1.code, t1.user_id, t2.id, t2.parent_id, t2.delta_level

虽然我没有尝试过这个查询,但我认为这会对你有所帮助。

【讨论】:

  • 对不起,没有,即使修复了给定的代码,它也会返回 1 行,有些像你只是定义了 MAX(id),我们不能使用 MAX(id),因为级别嵌套是由级别属性控制的
【解决方案2】:

这个变种变成了解决方案......我必须再测试他一点

SELECT
  t1.id
  , t1.parent_id
  , MIN(t1.level) min_level
  , t2.*
FROM
  user_nest t1
INNER JOIN
  product t2 ON t2.user_id = t1.parent_id
WHERE
  t1.id = 3
GROUP BY
  t2.code

【讨论】:

    猜你喜欢
    • 2017-10-30
    • 2016-08-25
    • 2015-03-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-04-28
    • 2015-02-19
    相关资源
    最近更新 更多