setAttribute(PDO::ATTR_DEFAULT_FETCH_MODE, PDO::FETCH_ASSOC); $pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); // ERRMODE_WARNING | ERRMODE_EXCEPTION | ERRMODE_SILENT } catch(Exception $e) { echo "Impossible d'accéder à la base de données SQLite : ".$e->getMessage(); die(); } $where_clause = 'WHERE 1 = 1 '; $where_clause .= 'AND item = '.$_REQUEST['item']; $sql = ' WITH arbre (id, level, path, realisation) AS( SELECT parent, 0, '['|| tree.parent || ']', (SELECT SUM(montant) FROM credit WHERE item in (SELECT item FROM tree st WHERE st.parent = tree.parent)) FROM tree WHERE_CLAUSE UNION ALL SELECT parent, arbre.level+1, arbre.path||'['||tree.parent||']',(SELECT SUM(montant) FROM credit WHERE item in (SELECT item FROM tree st WHERE st.parent = tree.parent)) FROM tree INNER JOIN arbre ON arbre.id = tree.item ) SELECT arbre.*, item.code, item.title, credit.montant FROM arbre INNER JOIN item ON arbre.id = item.id LEFT JOIN credit ON credit.item = item.id ORDER BY path '; $query = $pdo->prepare(str_replace('WHERE_CLAUSE',$where_clause,$sql)); $query->execute(); echo json_encode( $query->fetchAll(PDO::FETCH_ASSOC)); /* * TODO : Cumuler les réalisatiosn sur les parents lorsque ceux-ci n'en n'ont pas */ ?>