Mysql
 sql >> база данни >  >> RDS >> Mysql

Извличане на свързан списък в MySQL база данни

Някои марки бази данни (напр. Oracle, Microsoft SQL Server) поддържат допълнителен SQL синтаксис за изпълнение на „рекурсивни заявки“, но MySQL не поддържа такова решение.

Проблемът, който описвате, е същият като представянето на дървовидна структура в SQL база данни. Просто имате дълго, кльощаво дърво.

Има няколко решения за съхранение и извличане на този вид структура от данни от RDBMS. Вижте някои от следните въпроси:

Тъй като споменавате, че искате да ограничите "дълбочината", върната от заявката, можете да постигнете това, докато заявявате списъка по следния начин:

SELECT * FROM mytable t1
 LEFT JOIN mytable t2 ON (t1.next_id = t2.id)
 LEFT JOIN mytable t3 ON (t2.next_id = t3.id)
 LEFT JOIN mytable t4 ON (t3.next_id = t4.id)
 LEFT JOIN mytable t5 ON (t4.next_id = t5.id)
 LEFT JOIN mytable t6 ON (t5.next_id = t6.id)
 LEFT JOIN mytable t7 ON (t6.next_id = t7.id)
 LEFT JOIN mytable t8 ON (t7.next_id = t8.id)
 LEFT JOIN mytable t9 ON (t8.next_id = t9.id)
 LEFT JOIN mytable t10 ON (t9.next_id = t10.id);

Той ще работи като меласа и резултатът ще се върне на един ред (на свързан списък), но ще получите резултата.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. PHP връзката е неуспешна:SQLSTATE[HY000] [2002] Връзката е отказана

  2. SQLSTATE[HY000] [2002] Неуспешен опит за свързване.. - При опит за свързване от локален към отдалечен сървър

  3. Използване на PHP за изпълнение на множество MYSQL заявки

  4. Как мога да направя „вмъкване, ако не съществува“ в MySQL?

  5. Как да се уверите, че вашата база данни MySQL е защитена