Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Łączenie kolumn z wielu wierszy
Forum PHP.pl > Forum > Bazy danych > PostgreSQL
Ziels
Witam

Potrzebuję zrobić szukanie słownikowe w tabeli z danymi - używam TSearch2. Słownik ma uwzględniać pola z tabeli oraz odpowiednie tagi. Mam z tym dwa problemy, problem pierwszy:

  1. postgres=# UPDATE company SET textsearch = to_tsvector('public.polish', "name" || "description" || "city" || "street" || (SELECT name FROM tag LEFT JOIN company_tags on company_tags.TAG_ID = tag.id WHERE company_id=company.id));
  2. BŁĄD: more than one row returned BY a subquery used AS an expression


Jak mogę połączyć ze zwracane wyniki? Wystarczyłby mi odpowiednik implode()" title="Zobacz w manualu PHP" target="_manual z php


Problem drugi:

  1. CREATE TRIGGER tsvector_ui_outpost BEFORE INSERT OR UPDATE ON firm FOR EACH ROW EXECUTE PROCEDURE
  2. tsvector_update_trigger(textsearch, 'public.polish', "name", "description", "city", "street", (SELECT name FROM tag LEFT JOIN company_tags ON company_tags.TAG_ID = tag.id WHERE company_id=company.id));
  3. BŁĄD: błąd składni w lub blisko "("
  4. LINE 3: ...polish', "name", "description", "city", "street", (SELECT na...


Czy można jakos ominąć ten błąd?
prond
Spróbuj coś takiego
  1. SELECT array_to_string(array(SELECT name FROM tags ),’, ‘);


btw. tylko strzelam, że to zadziała
Sedziwoj
  1. CREATE TRIGGER tsvector_ui_outpost BEFORE INSERT OR UPDATE ON firm FOR EACH ROW EXECUTE PROCEDURE
  2. tsvector_update_trigger(textsearch, 'public.polish', "name", "description", "city", "street", (SELECT name FROM tag LEFT JOIN company_tags ON company_tags.TAG_ID = tag.id WHERE company_id=company.id));
  3. BŁĄD: błąd składni w lub blisko "("
  4. LINE 3: ...polish', "name", "description", "city", "street", (SELECT na...

array_to_string

Spróbuj:
  1. postgres=# UPDATE company SET textsearch = to_tsvector('public.polish', "name" || "description" || "city" || "street" || array_to_string(array(SELECT name FROM tag LEFT JOIN company_tags on company_tags.TAG_ID = tag.id WHERE company_id=company.id), ' ' ) );


Co do drugiego możesz spróbować to samo, ale raczej nie pójdzie, bo za wiele byś chciał ;]
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.