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

Dapatkan semua anak dengan id orang tua dan klausa di mana di mysql

Ada dua kemungkinan interpretasi. Dari komentar baru-baru ini, saya mengerti Anda membutuhkan yang pertama:

Mengecualikan anak-anak dari orang tua yang dikecualikan

Jadi meskipun anak-anak bukan editor, jika salah satu nenek moyangnya adalah editor, mereka harus dikeluarkan. Itu berarti Anda harus mengecualikan catatan di kueri paling dalam:tambahkan where di sana:

select  id,
        name,
        parent_id,
        user_type
from    (select * from p
         where user_type <> 'editor'
         order by parent_id, id) products_sorted,
        (select @pv := '19') initialisation
where   find_in_set(parent_id, @pv)
and     length(@pv := concat(@pv, ',', id))

Sertakan anak-anak dari orang tua yang dikecualikan

Dalam interpretasi ini Anda ingin anak-anak editor disertakan terlepas dari apakah ada leluhur mereka yang akan dikecualikan.

Tambahkan user_type bidang di select list dan kemudian bungkus kueri yang melakukan filter, seperti ini:

select  *
from    (
        select  id,
                name,
                parent_id,
                user_type
        from    (select * from p
                 order by parent_id, id) products_sorted,
                (select @pv := '19') initialisation
        where   find_in_set(parent_id, @pv)
        and     length(@pv := concat(@pv, ',', id))
) as sub
where user_type <> 'editor'

Jadi sekali lagi, di sini hasilnya akan menyertakan juga catatan yang hierarki induknya (orang tua, kakek-nenek, kakek-nenek, ...) mungkin tidak sepenuhnya disertakan (karena beberapa di antaranya bisa menjadi editor).



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Tidak ada operasi yang diizinkan setelah koneksi ditutup MYSQL

  2. buat semua bilangan bulat kenaikan otomatis dengan jumlah digit yang sama dengan nol di depan

  3. Pilih 10 baris pertama yang berbeda di mysql

  4. Apakah melakukan Manajemen Transaksi di Pengontrol praktik buruk?

  5. Teman dari teman di PHP/MySQL?