我有一个适用于我的网站的嵌套集模型,其中包含子类别中的项目,依此类推。除一个我无法解决的问题外,它的工作效果非常好。
+---------+-----------------------------+
| item_id | item_name |
+---------+-----------------------------+
| 1 | Laptop |
| 2 | iPod Classic 80GB |
| 3 | iPod Classic 160GB |
+---------+-----------------------------+
+---------+-------------+
| item_id | category_id |
+---------+-------------+
| 1 | 4 |
| 2 | 2 |
| 3 | 2 |
+---------+-------------+
+-------------+--------------------+-----+-----+
| category_id | name | lft | rgt |
+-------------+--------------------+-----+-----+
| 1 | iPod | 1 | 6 |
| 2 | Classic | 2 | 3 |
| 3 | Nano | 4 | 5 |
| 4 | Computers | 7 | 8 |
+-------------+--------------------+-----+-----+
使用以下查询:
SELECT parent.name, COUNT(product.item_id)
FROM Category AS node, Category AS parent, Item_Category AS product
WHERE node.lft BETWEEN parent.lft AND parent.rgt
AND node.category_id = product.category_id
GROUP BY parent.name
ORDER BY node.lft;
提供以下输出:
+-----------------+------------------------+
| name | COUNT(product.item_id) |
+-----------------+------------------------+
| iPod | 2 |
| Classic | 2 |
| Computers | 1 |
+-----------------+------------------------+
换句话说,不会显示其中没有产品的所有字段。现在到问题了,我想向他们展示COUNT()结果=0。我的查询将如何实现这一点?:)
听起来像是LEFT OUTER JOIN的一项任务,例如:
SELECT parent.name, COUNT(product.item_id),
(select count(*) from Category parent2
where parent.lft > parent2.lft
and parent.rgt < parent2.rgt) as depth
FROM Category parent
LEFT OUTER JOIN Category node
ON node.lft BETWEEN parent.lft AND parent.rgt
LEFT OUTER JOIN Item_Category product
ON node.category_id = product.category_id
GROUP BY parent.name
ORDER by node.lft
因此,您确保显示所有类别。请注意,我不确定100%。
编辑:为深度添加了子选择,请尝试一下。
编辑:删除逗号
Alpha-父级,子级为beta 贝塔-阿尔法的孩子,查理 Charlie-有一个列表,通常在制作中会被洗牌 AlphaTest[需要此测试的帮助]-想尝试不同的洗牌变体,看看alpha/beta会如何反应。 目标是用不同的组合测试Alpha/Beta。不知道最好的方法是什么?这正是复制的代码。也可以更改设置以方便测试。尝试了不同的变体,但没有任何效果。非常感谢您的帮助。 我不确定,我尝试了一堆方
问题内容: 我有以下我想用流程注释的内容: 我知道该怎么做了类型检查,这样的类型的(如上图所示),但我怎么能型检查其属性呢? 已经尝试过: 但是随后流程只是抱怨而从未使用过。 问题答案: 因此,您要发送类型为的道具,该道具必须具有属性和? 如果没有编写执行此检查的自定义函数,则无法实现。为此,您需要这样声明: 这是官方文档所说的: 您还可以指定一个自定义验证器。如果验证失败,它将返回一个Error
使用Laravel 5.6,我试图从MySQL类别表中显示子类别的子类别。我想传递这个名字,并获得它的所有子类,而不管父类是什么。 类别表 期望结果 return App\Category::where('name','Child-1-P-2'))-
问题内容: 我正在寻找翻译来更改此内容: 到MongoJava聚合框架。就像是 : 我在文档中找不到答案,我认为它太糟糕了,否则我可能会迷失其中(|哑巴)。 我会先谢谢你 问题答案: 您可以使用以下聚合。
本页包含内容: 嵌套类型实例 嵌套类型的引用 枚举类型常被用于实现特定类或结构体的功能。也能够在有多种变量类型的环境中,方便地定义通用类或结构体来使用,为了实现这种功能,Swift允许你定义嵌套类型,可以在枚举类型、类和结构体中定义支持嵌套的类型。 要在一个类型中嵌套另一个类型,将需要嵌套的类型的定义写在被嵌套类型的区域{}内,而且可以根据需要定义多级嵌套。 嵌套类型实例 下面这个例子定义了一个结
问题内容: 我一直在尝试搜索包含嵌套字段的文档。我创建了这样的嵌套映射: 我的搜索如下所示: 但是我收到此错误消息: 编辑 我仍然收到此错误。我正在通过Java执行此操作,因此这是我要创建的文档: 像这样创建索引: 我认为我可能对文档编制了错误的索引。 问题答案: TLDR:输入您的嵌套类型。 假设我们有一个普通类型,并且嵌套了另一个类型: 该行是分配给的嵌套查询所必需的,如下所示: 该行似乎仅在