sql >> Databasteknik >  >> RDS >> Mysql

rekursiv funktion för att få alla barnkategorier

Jag hade svårt att försöka lista ut din funktion. Jag tror att det här kommer att göra vad du vill. Den får alla barn i en kategori med ID $id, och även deras barn (och får alltså hela underkategorin, underkategorieffekten som du ville ha).

function categoryChild($id) {
    $s = "SELECT ID FROM PLD_CATEGORY WHERE PARENT_ID = $id";
    $r = mysql_query($s);

    $children = array();

    if(mysql_num_rows($r) > 0) {
        # It has children, let's get them.
        while($row = mysql_fetch_array($r)) {
            # Add the child to the list of children, and get its subchildren
            $children[$row['ID']] = categoryChild($row['ID']);
        }
    }

    return $children;
}

Denna funktion returnerar:

$var = array(
        'categoryChild ID' => array(
                'subcategoryChild ID' => array(
                        'subcategoryChild child 1' => array(),
                        'subcategoryChild child 2' => array()
                )
        ),
        'anotherCategoryChild ID' => array() # This child has no children of its own
);

Den returnerar i princip en array med barnets ID och en array som innehåller ID:n för dess barn. Jag hoppas att detta är till någon hjälp.



  1. Hur man tar bort en kolumn i SQL Server med T-SQL

  2. ADO.NET anropar T-SQL lagrad procedur orsakar ett SqlTimeoutException

  3. node.js mysql-fel:ECONNREFUSED

  4. Hur man tar bort rätt stoppning på dagnamnet i Oracle