Dynamiczne podmiana pobieranych danych w zapytaniu

Odpowiedz Nowy wątek
2017-11-29 23:22

Rejestracja: 2 lata temu

Ostatnio: 1 dzień temu

Lokalizacja: Warszawa

0

Mam w bazie zapisaną wartość:

wartosc = kod1||'/'||opis||'/'||temat 

Pobieram ją selectem:

select wartosc from tabela

Mam drugie zapytanie:

select wynik_1_zapytania from tabela2 limit 1 

żeby za wynik_1_zapytania podstawiło mi się

kod1||'/'||opis||'/'||temat 

Wynikiem drugiego zapytania będzie np.

1/cokolwiek/temat cokolwiek

Są to pola zdefiniowane w drugiej tabeli. Ogólnie chodzi o to, żeby użytkownik sam poskładał pola, które chce mieć wykorzystane w zapytaniu

edytowany 2x, ostatnio: endrius, 2017-11-29 23:24

Pozostało 580 znaków

2017-11-30 00:28

Rejestracja: 7 lat temu

Ostatnio: 3 godziny temu

0

nie mam pojęcia o co chodzi. Najlepiej opisz to KONKRETNIE wraz ze strukturą OBU tabel i przykładowymi danymi oraz wynikiem.


Chcesz pomocy - pokaż kod - abrakadabra źle działa z techniką.

Pozostało 580 znaków

2017-11-30 01:04

Rejestracja: 2 lata temu

Ostatnio: 1 dzień temu

Lokalizacja: Warszawa

0

Tabele:

CREATE TABLE test.test
(
  wartosc text
)
WITH (
  OIDS=TRUE
);

CREATE TABLE test.test
(
  kod1 text, 
  opis text, 
  temat text, 
  info text
)
WITH (
  OIDS=TRUE
);

Funkcja, która obrazuje co chcę osiągnąć:

CREATE OR REPLACE FUNCTION test.test()
  RETURNS text AS
$BODY$

DECLARE 

wartosc_tab1 text;
wynik text;

BEGIN 

    wartosc_tab1:= (select wartosc from test.konfig); -- wynik tego zapytania = kod1||'/'||opis||'/'||temat

    wynik:= (select wartosc_tab1 from test.opisy limit 1); -- wynik tego zapytania jest identyczny jak pierwszego kod1||'/'||opis||'/'||temat

RETURN wynik;

END; 

$BODY$
  LANGUAGE plpgsql VOLATILE
  COST 100;

Chodzi o to, że wynik pierwszego zapytania to są częściowo kolumny tabeli Opisy. Chodzi mi o to, że on wstawia do zapytania przy wynik wartość jako tekst, a ja potrzebuję, żeby on potraktował to jako kolumny (nie interesuje mnie czy one tam będą istnieć czy nie, bo najwyżej błąd wywali), a zapytanie wynik miało ostatecznie postać:

select kod1||'/'||opis||'/'||temat from test.opisy limit 1

I jeszcze może pytanie: Czy da się w jakiś sposób zrzutować grupę kolumn zapisaną jako tekst, żeby potraktowało je jako kolumny?

edytowany 2x, ostatnio: endrius, 2017-11-30 01:09

Pozostało 580 znaków

2017-11-30 02:25

Rejestracja: 7 lat temu

Ostatnio: 3 godziny temu

https://www.google.pl/search?q=postgres+dynamic+sql+in+function


Chcesz pomocy - pokaż kod - abrakadabra źle działa z techniką.
EXECUTE :). Podziękował. W temacie użyłem dynamicznie, ale wyszukiwałem już bez tego - endrius 2017-11-30 14:35

Pozostało 580 znaków

Odpowiedz

1 użytkowników online, w tym zalogowanych: 0, gości: 1, botów: 0