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

Pobierz wszystkie dzieci według identyfikatora rodzica i klauzuli gdzie w mysql

Możliwe są dwie interpretacje. Z ostatniego komentarza rozumiem, że potrzebujesz pierwszego:

Wyklucz dzieci wykluczonych rodziców

Więc nawet jeśli dzieci nie są redaktorami, jeśli jeden z ich przodków jest redaktorem, należy je wykluczyć. Oznacza to, że powinieneś wykluczyć rekordy w najbardziej wewnętrznym zapytaniu:dodaj where tam:

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))

Uwzględnij dzieci wykluczonych rodziców

W tej interpretacji chcesz, aby dzieci redaktorów były uwzględnione niezależnie od tego, czy którykolwiek z ich przodków ma zostać wykluczony.

Dodaj user_type pole w select wypisz, a następnie zapakuj zapytanie, które wykonuje filtr, w ten sposób:

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'

Więc znowu, tutaj wynik będzie zawierał również rekordy, których hierarchia rodzicielska (rodzic, dziadek, dziadek, ...) może nie być w pełni uwzględniona (ponieważ niektóre z nich mogą być edytowane).



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Błąd:Przestrzeń tabel dla tabeli xxx istnieje. Proszę ODRZUĆ obszar tabel przed IMPORTOWANIEM

  2. Składnia wyzwalacza MySQL „aktualizacja w kolumnie”

  3. Jak znaleźć katalog danych mysql z wiersza poleceń w systemie Windows?

  4. MySQL JOIN w celu zastąpienia identyfikatorów wartościami z innej tabeli

  5. ColdFusion Parametryzacja zapytania