作为练习,我正在用InnoDB引擎为一个购物应用程序html" target="_blank">构建一个MySQL关系数据库(我是一个新手,对于初学者的问题,我提前表示歉意)。
对于产品类别,我决定使用邻接列表模型作为分层数据树。有两个关注表:
我找到了一个来自Mike Hillyer的查询,用于检索完整的树:
SELECT t1.name AS lev1, t2.name as lev2, t3.name as lev3, t4.name as lev4
FROM categories AS t1
LEFT JOIN categories AS t2 ON t2.parent = t1.category_id
LEFT JOIN categories AS t3 ON t3.parent = t2.category_id
LEFT JOIN categories AS t4 ON t4.parent = t3.category_id
WHERE t1.name = 'ELECTRONICS';
但我不知道如何将其与产品表联系起来。
我使用引用这个问题的查询来获取特定类别(第19个元素)的孩子:
SELECT category_id,
name,
parent_id
FROM (select * from categories
order by parent_id, category_id) products_sorted,
(select @pv := '19') initialisation
WHERE find_in_set(parent_id, @pv)
AND length(@pv := concat(@pv, ',', category_id))
我认为我应该使用JOIN从两个表中进行选择,但我没有得到正确的结果。
我想做的是,通过category_id获取产品,还要检索父类别。
此外,当用户单击根或任何级别的子类别时,我也想从子节点获取所有产品。
从给定类别(包括子类别)中获取所有产品的解决方案是
SELECT *
FROM products
WHERE category_id IN
(
SELECT category_id
FROM `categories`
WHERE FIND_IN_SET(`category_id`, (
SELECT GROUP_CONCAT(Level SEPARATOR ',') FROM (
SELECT @Ids := (
SELECT GROUP_CONCAT(`category_id` SEPARATOR ',')
FROM `categories`
WHERE FIND_IN_SET(`parent_id`, @Ids)
) Level
FROM `categories`
JOIN (SELECT @Ids := 1) temp1
) temp2
))
)
上面的查询从 ID 为 1 的类别(和子类别)中选择所有产品
这是小提琴链接
本文向大家介绍如何获取MySQL表列的数据类型?,包括了如何获取MySQL表列的数据类型?的使用技巧和注意事项,需要的朋友参考一下 您可以在“ information_schema.columns”的帮助下获取MySQL表列数据类型。 语法如下- 要了解上述语法,让我们首先创建一个表- 应用以上语法获取MySQL列数据类型。查询如下- 以下是输出- 如果需要,请在数据类型之前的输出中也包括列名称。
问题内容: 我使用PDO和MySQL,出于某种原因,当从数据库中获取int类型的值时,PDOStatement返回的是数字的字符串表示形式,而不是数字类型的值。如何防止这种情况发生? 我注意到有一个PDO类的属性:应该可以解决这个问题,但是在尝试修改它时,它抛出一个错误,指出该属性对MySQL驱动程序无效。 查询数据库时,获取字符串而不是数字是否正常? 问题答案: 我不认为可以在PHP 5.2中完
我在JPA上工作。我的要求是从表中获取列名和数据类型。我有查询来做这件事,但这些是原生查询的。如果我使用这些原生查询,它将支持任何数据库,如Oracle,MySql,....... 现在我正在使用MySql和JPA工作得很好。 下面的查询用于获取表列名 我使用JPA中的createNativeQuery()执行了上面的查询。它将支持所有的数据库。如果没有,我怎么能做到这一点。非常感谢。
我有一张桌子在下面。我想获取父级所在的所有类别。 当我通过id=4时,它应该给出以下结果 但它给出了总体表的一般结果。我只需要那些id=4的记录。查询只给出2条记录测试4
问题内容: 我有一个电影数据库,我想要列出当年没有电影的年份。所以我只需要一个列表(1900 .. 2012),然后我就可以加入和加入而不是加入。 我有: 但这似乎是非SQL的,并且与运行Python代码来创建同一张表相比,仅略微减少了麻烦。我真的很喜欢那些不使用存储过程,不使用循环并且不使用实际表的东西,以这种关注的顺序。 问题答案: 几年前我也遇到过类似的问题。我的解决方案是: 1.顺序表 我
我的起点是一个包含类别ID及其父ID的数组,来自Virtuemart categories表,如下所示: 我需要有一个字符串,每个最后类别的孩子完整的路径由/(斜杠)之间的孩子和由,(逗号)之间的第一级父母 我的输出应该是: 我可以把启动数组转换成这个