我有一个树形结构的数据表,这个树形结构固定只有四层,第一层固定不会增减,二、三层有可能增加但不会减少,最后一层的数据可增、删、改
现在我想取出最后一层的所有数据集合。
树形结构如下
表结构如下
我用的数据库为 redmine 自带的 sqlite3
请教前辈们我该怎么做,给个思路
额,我觉得这种方法可能行不通,打出来的结果是: SELECT "product_catalogs".* FROM "product_catalogs" WHERE ("product_catalogs"."parent_id" NOT IN (1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12)) 因为我的这个表第二层和第三层不会不变的,可能增加但不会减少,所以没办法指定 map(:id)到第几个
我觉得你就是要找 parent_id 为最大的集合 试试下面的查询
ProductCatalog.select("product_catalogs.*").order("parent_id desc").group_by(&:parent_id).first[1]
第一层 :first_level = ProductCatalog.where("parent_id is null")
第二层 :second_level = ProductCatalog.where(parent_id:first_level.collect(&:id))
第三层 :third_level = ProductCatalog.where(parent_id:second_level.collect(&:id))
第四层 :fourth_level = ProductCatalog.where(parent_id:third_level.collect(&:id))