Mysql
 sql >> Baza danych >  >> RDS >> Mysql

Jak uzyskać identyfikatory przodków dla dowolnej głębokości rekurencji w jednym zapytaniu SQL?

SELECT c.id, b.id, a.id 
FROM T 
INNER JOIN T AS c on T.parent_id=c.id 
INNER JOIN T AS b ON c.parent_id = b.id 
INNER JOIN T as a ON b.parent_id = a.id

zakładając jednak, że twój stół o nazwie T. nie został przetestowany. Nie wiesz, co się stanie, jeśli d nie ma trzech rodziców, prawdopodobnie nic nie otrzymasz, możesz spróbować LEFT JOIN w takich przypadkach, aby uzyskać wartości NULL dla świetnych rodziców. Ponadto ostatnie JOIN nie jest tak naprawdę konieczne, ponieważ możesz po prostu wybrać b.parent_id zamiast a.id, ale wiesz, po prostu poprowadzić wzorzec do domu;)



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Dlaczego bazy danych NoSql skalują się lepiej niż relacyjne bazy danych? Jak mam wybierać między nimi?

  2. Wyodrębnianie podciągów MySQL za pomocą separatora

  3. Przetwarzanie dużych ilości danych w PHP bez limitu czasu przeglądarki

  4. mysqldump Błąd 1045 Odmowa dostępu pomimo poprawnych haseł itp

  5. Jak obliczyć najwyższe dzienne zmiany cen w % za pomocą MySQL?