2016-06-14 5 views
0

Ich verwende postgre sql und phpPgAdmin für meine Datenbank.Wie kann ich Datensätze in mehreren Tabellen mit der gleichen Spalte für WHERE-Klausel zählen pgsql

Ich habe eine Tabelle, wo ich wie einige Tabellennamen hinzugefügt:

table_lsts

id Name Tabellenname

11 abbc tabelle1

22 xyyz table2

33 deef table3

jetzt in Tabelle 1, Tabelle 2, table3 ich habe mehrere Datensätze eine gemeinsame Spalte als vpvc_id benannt haben.

Mein Problem ist, ich muss eine Abfrage schreiben, die zuerst alle Tabellennamen aus table_lsts erhalten.

dann zählen Rekord in jenem Tisch, an dem vpvc_id in (einige ids hier) etc

kann jemand bitte helfen?

Antwort

1

versuchen, diese Funktion:

CREATE OR REPLACE FUNCTION count_records (ids_lst character varying) 
RETURNS integer AS 
$BODY$declare 
query character varying; 
result integer; 
BEGIN 
    -- First query that create a dynamic query on all tables of table_lsts 
    select into query 'select count(*) from (' || String_agg('select vpc_id from '||tablename,' UNION ALL ') || ') a where vpc_id in ('||ids_lst||')' from table_lsts ; 
---execute dynamic query 
execute query into result; 
return result; 
END;$BODY$ 
LANGUAGE plpgsql VOLATILE 

Und es wie folgt verwenden:

select count_records('2,5') 
Verwandte Themen