在mysql中显示同一个表中的记录和子记录

时间:2011-11-28 10:55:23

标签: mysql

我在mysql中有一个表,其数据如下

code    itemcode    qty    subcode    
1       "A"         1      0  
2       "B"         2      0  
3       "C"         3      1  
4       "D"         4      1 

我想显示下面给出的这些记录。

code   itemcode  qty  subcode  
1      "A"       1    0  
3      "C"       3    1  
4      "D"       4    1  
2      "B"       2    0  

属于同一组的记录将具有相同的子代码。我想显示按其代码排序的所有记录,并在每个代码实例下面显示我想要显示在子代码字段中具有相同值的记录。任何人都可以帮助我。

1 个答案:

答案 0 :(得分:0)

我认为在查询本身中进行这种排序是不好的设计。在客户端,你可能会做一些重新排列以显示关系,所以我会做两个查询:

SELECT * FROM table WHERE subcode = 0 - >给出所有顶级元素

SELECT * FROM table WHERE subcode!= 0 ORDER BY子代码 - >给出每个父节点分组的所有子元素。

然后在您的客户端代码中,您可以轻松地在对象模型中重建关系,然后以您需要的任何方式显示它。

如果您在查询中确实需要它,Oracle可以直接支持它: SELECT * FROM表CONNECT BY PRIOR subcode = code。请参阅http://docs.oracle.com/cd/B14117_01/server.101/b10759/queries003.htm#i2060615

在MySQL中,您必须使用递归存储过程,例如:http://evolt.org/node/4047/