sql >> Database >  >> RDS >> Mysql

Hoe zorg ik ervoor dat de categorie op het eerste niveau slechts één keer wordt weergegeven?

voer alleen de catname uit wanneer het verandert. U moet uw zoekopdracht ook eerst op categorienaam ordenen.

$row = mysql_fetch_array($result);
$catname = $row["category_name"];
$subcatname = $row["subcategory_name"];
$last = $catname;

echo "<li>$catname</li><ul>"

while($row = mysql_fetch_array($result)) {
    $catname = $row["category_name"];
    $subcatname = $row["subcategory_name"];
    if($last != $catname){
        echo "</ul><li>$catname</li><ul>"
    }
    echo "<li>$subcatname</li>";
    $last = $catname;
}
echo "</ul>";

Bewerken:lees de vraag nog eens helemaal en wil zeggen dat als het gaat om hiërarchische bomen, het gebruik van een ouder/kind (of categorie/sub/subsub) niet de beste methode is. Hoewel het werkt, vereist het meestal meerdere query's en recursieve functies voor weergave. Een betere benadering is om de geneste set te gebruiken die precies voor dit doel is gemaakt.



  1. De kosten van gratis PostgreSQL-publiciteit

  2. Hoe date_trunc() werkt in PostgreSQL

  3. Hoe Excel- of CSV-gegevens in de tabel in te voegen met behulp van de grafische gebruikersinterface in SQL Server - SQL Server / TSQL-zelfstudie, deel 102

  4. Getallen opmaken in MariaDB