sql >> Databáze >  >> RDS >> PostgreSQL

Vytvořte řetězec z pole

můžete zkombinovat více operací, jako je create_subscripts a array, abyste získali výsledek:

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]
  ), '->'
) ;

živý příklad Sqlfiddle

nebo použijte vnější spojení v kombinaci s libovolným:

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

živý příklad Sqlfiddle



  1. Připojte se ke vzdálené databázi MySQL pomocí VB.NET 2010

  2. Editační sloupec TableView JAVA FX

  3. Přenosná verze MySql

  4. Nelze agregovat pole