sql >> Database >  >> RDS >> Mysql

de bovenliggende naam van de onderliggende categorie verkrijgen met een enkele zoekopdracht in mysql

Samen met zichzelf aan tafel , met behulp van de parent kolom om te linken naar de cat_id van de ouder.

SELECT c1.cat_id as childID, c1.cat_name ChildName, c2.cat_name as ParentName
from category c1
LEFT OUTER JOIN category c2
ON c1.parent = c2.cat_id
  • Let op:aangezien sommige elementen geen ouders hebben (NULL ), plaats ik een LEFT OUTER JOIN dus die rijen worden ook weergegeven. Als je dat niet wilt, gebruik dan een JOIN in plaats van LEFT OUTER JOIN .
  • Je kunt ook de regels tonen, maar iets anders tonen (leeg of atext of ...) in plaats van de NULL door COALESCE . te gebruiken .
  • Je kunt het resultaat beschouwen als één (grote) nieuwe tabel, dus je kunt WHERE-clausules toevoegen zoals je gewoonlijk doet, bijvoorbeeld door te filteren op de bovenliggende naam:WHERE c2.cat_name = 'test2'


  1. Hoe SQLite-query asynchroon uit te voeren op achtergrondthread?

  2. Hoe UUID_SHORT() werkt in MariaDB

  3. Generieke Ruby-oplossing voor SQLite3 LIKE of PostgreSQL ILIKE?

  4. Meerdere versies van de database maken en implementeren via schema-snapshots