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

Вземете всички деца по идентификатор на родител и клауза where в mysql

Възможни са две интерпретации. От скорошен коментар разбирам, че имате нужда от първия:

Изключване на деца на изключени родители

Така че дори децата да не са редактори, ако някой от техните предци е редактор, те трябва да бъдат изключени. Това означава, че трябва да изключите записи от най-вътрешната заявка:добавете where там:

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

Включете деца на изключени родители

В това тълкуване искате децата на редактора да бъдат включени, независимо дали някой от техните предци трябва да бъде изключен.

Добавете user_type полето в select списък и след това обвийте тази заявка, която изпълнява филтъра, както следва:

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'

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



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Как мога да направя три присъединявания към таблицата в заявка UPDATE?

  2. Командата Mysql не е намерена в OS X 10.7

  3. php стартирайте веднъж и вмъкнете два пъти в базата данни на mysql

  4. Използване на група по две полета и броене в SQL

  5. Производителност на MySQL:Една или няколко таблици