PostgreSQL
 sql >> Baza danych >  >> RDS >> PostgreSQL

Utwórz ciąg z tablicy

możesz łączyć wiele operacji, takich jak generate_subscripts i tablica, aby uzyskać wynik:

with mtab as (
      SELECT id, name, array_append(arrayofparents,id) as arrayofparents,
      generate_subscripts(array_append(arrayofparents, id), 1) AS p_id FROM tab where id=2
)
select distinct array_to_string(
  array(
    select tab.name from tab join mtab t on tab.id=t.arrayofparents[t.p_id]
  ), '->'
) ;

przykład na żywo Sqlfiddle

lub użyj połączenia zewnętrznego w połączeniu z dowolnym:

SELECT coalesce(string_agg(p.name, '->') || '->' || t.name, t.name) AS parentnames
FROM tab AS t
  LEFT JOIN tab AS p ON p.id = ANY(t.arrayofparents)
 where t.id =7 
GROUP BY t.id, t.name

przykład na żywo Sqlfiddle



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Jak przeprowadzić audyt bazy danych PostgreSQL

  2. Co oznacza regclass w Postgresql

  3. Jak wyświetlić wartości null podczas uruchamiania zapytań w psql (PostgreSQL)

  4. Aktualizuj znacznik czasu, gdy wiersz jest aktualizowany w PostgreSQL

  5. Jak mogę (lub mogę) WYBRAĆ ODRĘBNE w wielu kolumnach?