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

Jakiego zapytania użyję, aby uzyskać rekordy rodzeństwa podczas korzystania z tabel zamknięcia?

Rodzeństwo danego węzła miałoby tego samego przodka. Będzie to jednak zawierało „1” oraz listę:

select t.*
from table t 
where t.ancestor = (select ancestor from table t2 where t.id = 2);

W Twojej tabeli nie jestem pewien, co to oznacza dla ancestor być takim samym jak descendant . Ale myślę, że następujące jest zapytanie, którego szukasz:

select t.*
from table t 
where t.ancestor = (select ancestor from table t2 where t2.id = 2) and
      t.ancestor <> t.descendant and
      t.id <> 2;

EDYCJA:

Możesz to zrobić jasno dołącz w ten sposób:

select t.*
from table t join
     table t2
     on t.ancestor = t2.ancestor and
        t2.id = 2 a
where t.id <> 2 and
      t.ancestor <> t.descendant;

Uwaga:dodałem również warunek t.id <> 2 więc "2" nie jest uważane za własne rodzeństwo.




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. MySQL :ERROR 1215 (HY000):Nie można dodać ograniczenia klucza obcego

  2. mySQL MATCH w wielu tabelach

  3. Jak połączyć trzy zapytania MySQL w jedno?

  4. wstaw polecenie odrzucone w mysql

  5. PHP — Jak zaktualizować dane do MySQL po kliknięciu przycisku opcji