还求SQL高手?

tsyd 2002-08-14 05:12:55
货物类 A
交通工具 A11
汽车 A1101
轿车 A110101
普通轿车 A11010101
高级轿车 A11010102
载客汽车 A110102
旅行面包车 A11010201
公共汽车 A11010202
飞机 A1102
食物 A07
房产类 B

字段名:category_id category_name(A、B、A11等均为category_id,货物类等为category_name)

要求得出上面的效果。
...全文
80 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
riyeye 2002-08-16
  • 打赏
  • 举报
回复
那就写存储过程呗。
skyfzx 2002-08-16
  • 打赏
  • 举报
回复
还是要写过过程做起来比较方便了
qiushuiwuhen 2002-08-16
  • 打赏
  • 举报
回复
只能将食物排到交通工具的前面....

SQL 语句

SQL 语句:
SELECT REPEAT(" ",length(category_id)),category_id,category_name FROM category
ORDER BY category_id LIMIT 0, 30

REPEAT(" ",length(category_id)) category_id category_name
  A 货物类
    A07 食物
    A11 交通工具
      A1101 汽车
        A110101 轿车
          A11010101 普通轿车
          A11010102 高级轿车
        A110102 载客汽车
          A11010201 旅行面包车
          A11010202 公共汽车
      A1102 飞机
  B 房产类
tsyd 2002-08-15
  • 打赏
  • 举报
回复
我现在可以写SQL语句使一条记录有三个值,ID,NAME,父ID

其实就象以前的那种论坛了,一个记录可能有父ID,也可能还有子ID

那如何把他们写成一个数型呢?
MountLion 2002-08-15
  • 打赏
  • 举报
回复
select rpad(' ',level-1)||name||id
from your_table
connect by id like prior id ||'__' --两位
start with id='A'
CHENGXB 2002-08-14
  • 打赏
  • 举报
回复
增加一个category_fid 字段:标识记录的上级
假设最上一级的记录的id 为X,则可以这样:
select * from your_table start with category_id='X'
connect by category_fid=prior category_id
至于统计,好像只能写过程处理了。
harlemz 2002-08-14
  • 打赏
  • 举报
回复
那我看你还是写存储过程得了!
tsyd 2002-08-14
  • 打赏
  • 举报
回复
不是这样的拉,要形成树型的效果,我又不只是要把他们查出来,查还是要查出来的,还要根据他们的ID排列。

有没什么好的方案,不仅仅要查出来,还要统计,比方说:ID只有一位的有多少个要循环多少次,ID有三位在A下一级的有多少个要循环多少次,ID有5位的在下一级的.......
harlemz 2002-08-14
  • 打赏
  • 举报
回复
SELECT category_id,category_name FROM TABLENAME
GROUP BY category_id,category_name ORDER BY category_id;
jlandzpa 2002-08-14
  • 打赏
  • 举报
回复
connect by

17,134

社区成员

发帖
与我相关
我的任务
社区描述
Oracle开发相关技术讨论
社区管理员
  • 开发
  • Lucifer三思而后行
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧