如何基于SQL表中的父ID获取层次结构子级?

时间:2019-05-31 06:56:21

标签: sql postgresql

我正在使用laravel api的postgresql。我的用户表包含如下数据,

com.samsung.api

我很难查询数据,如果我有参数parent_id = 2,那么结果数据应该像这样,

id    parent_id
2       
7     2 
3     2
14    3
5     3
6     3
17    3
4     3

我已经尝试过此SQL代码

id

7
3
14
5
6
17
4

但是显示错误

WITH    q AS 
        (
        SELECT  *
        FROM    users
        WHERE   parent_id = 2
        UNION ALL
        SELECT  m.*
        FROM    users as m
        JOIN    q
        ON      m.parent_id = q.id
        )
SELECT  *
FROM    q

我不知道是什么问题, 有人可以帮我解决这个问题吗? 任何帮助将不胜感激!谢谢!

1 个答案:

答案 0 :(得分:1)

尝试如下

private void cmbPaySubActionPerformed(java.awt.event.ActionEvent evt) {                                          
    try{
        Class.forName("com.mysql.jdbc.Driver");
        Connection con=DriverManager.getConnection("jdbc:mysql://localhost:3306/sipnena", "root", "");
        String sql="select * from payments where cmbSubject=?";
        PreparedStatement pst=con.prepareStatement(sql);
        pst.setString(4, (String)cmbPaySub.getSelectedItem());

        ResultSet rs=pst.executeQuery();

        while(rs.next()){
            txtFee.setText(rs.getString("Fee"));
        }
    }
    catch(Exception e){
        JOptionPane.showMessageDialog(null, e);
    }
}