Mysql
 sql >> Teknologi Basis Data >  >> RDS >> Mysql

MySQL Nested Sets - Bagaimana menemukan induk dari simpul?

Lihat ini pertanyaan . Ini mirip dengan milikmu. Saya telah memposting di sana pertanyaan yang mungkin Anda perlukan.

SELECT title, (SELECT TOP 1 title 
           FROM tree t2 
           WHERE t2.lft < t1.lft AND t2.rgt > t1.rgt    
           ORDER BY t2.rgt-t1.rgt ASC) AS parent
FROM tree t1
ORDER BY rgt-lft DESC

Saya harap ada yang Anda butuhkan.

Untuk tabel berikut:

+-------------+----------------------+-----+-----+
| category_id | name                 | lft | rgt |
+-------------+----------------------+-----+-----+
|           1 | ELECTRONICS          |   1 |  20 |
|           2 | TELEVISIONS          |   2 |   9 |
|           3 | TUBE                 |   3 |   4 |
|           4 | LCD                  |   5 |   6 |
|           5 | PLASMA               |   7 |   8 |
|           6 | PORTABLE ELECTRONICS |  10 |  19 |
|           7 | MP3 PLAYERS          |  11 |  14 |
|           8 | FLASH                |  12 |  13 |
|           9 | CD PLAYERS           |  15 |  16 |
|          10 | 2 WAY RADIOS         |  17 |  18 |

itu menghasilkan output:

title                | parent
----------------------------------------------
ELECTRONICS          | NULL
PORTABLE ELECTRONICS | ELECTRONICS
TELEVISIONS          | ELECTRONICS
MP3 PLAYERS          | PORTABLE ELECTRONICS
FLASH                | MP3 PLAYERS
CD PLAYERS           | PORTABLE ELECTRONICS
2 WAY RADIOS         | PORTABLE ELECTRONICS
TUBE                 | TELEVISIONS
LCD                  | TELEVISIONS
PLASMA               | TELEVISIONS


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. SQL:Dapatkan Produk dari suatu kategori tetapi juga harus dalam kumpulan kategori lain

  2. Cara Mengatur Replikasi Asinkron dari Galera Cluster ke server MySQL Standalone dengan GTID

  3. MySQL Hapus semua baris dari tabel dan setel ulang ID ke nol

  4. pekerjaan untuk menghapus baris yang lebih lama dari 3 bulan di database mysql

  5. Temukan Pengguna di Laravel berdasarkan Nama Pengguna