Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> Pobieranie najwyższego rodzica
rad11
post 18.06.2018, 07:38:07
Post #1





Grupa: Zarejestrowani
Postów: 1 234
Pomógł: 177
Dołączył: 7.10.2012
Skąd: Warszawa

Ostrzeżenie: (0%)
-----


Mam sobię taką strukturę danych:

fiddle

Potrzebuję przy użyciu metody rekursywnej uzyskać taki wynik gdzie:

Kod
X-1, X2->X3, X2(Najwyższy rodzic)
C-1, C2->C3, C2(Najwyższy rodzic)
Y-1, X2, X2(Najwyższy rodzic)
Z-1, Z2(Najwyższy rodzic)


Próbowałem czymś takim:

Kod
WITH RECURSIVE roots (issue_key, first_root) AS (
      (SELECT aaf.issue_key, ARRAY[aaf.value_string::text]
      FROM additional_fields aaf
      WHERE aaf.field_name = 'customfield_12157')

      UNION ALL

      SELECT aaf.issue_key, ARRAY_APPEND(r.first_root, aaf.value_string::text)
      FROM additional_fields aaf
      INNER JOIN roots r ON TRIM(UPPER(r.issue_key)) = TRIM(UPPER(aaf.issue_key))
  )
  SELECT
      roots.issue_key,
      roots.first_root[1]
  FROM  roots


Najwyższy rodzic zawarty jest w polu field_name gdzie value_string = customfield_12157

ale po pierwsze lokalnie mi to działa ale zwraca błędne dane, a tutaj w fiddlu wiesza się i wypluwa błąd. Ma ktoś pomysł jak to poprawnie zrobić?

Ten post edytował rad11 18.06.2018, 07:39:10
Go to the top of the page
+Quote Post
mmmmmmm
post 18.06.2018, 11:04:57
Post #2





Grupa: Zarejestrowani
Postów: 1 401
Pomógł: 306
Dołączył: 18.04.2012

Ostrzeżenie: (0%)
-----


  1. WITH recursive roots(ik, fr, node) AS (
  2. SELECT issue_key, value_string, issue_key node FROM additional_fields WHERE value_string IS NOT NULL
  3. UNION ALL
  4. SELECT issue_key, value_string, roots.node FROM roots, additional_fields WHERE issue_key=roots.fr AND roots.ik<>roots.fr
  5. )
  6. SELECT * FROM roots
  7. WHERE node='Y-1' AND fr IS NULL

pokombinuj z tym
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Wersja Lo-Fi Aktualny czas: 17.11.2018 - 06:14