Warum willst Du 500 identische Tabellen anlegen? Das macht doch gar keinen Sinn?
Hallo zusammen,
ich m�chte folgende Arbeitsschritte m�glichst automatisiert laufen lassen und wenn m�glich in einem Schritt zusammenfassen:
Schritt 1:
CREATE TABLE tabelle_1 AS
SELECT *
FROM vertices_tmp
JOIN
(SELECT * FROM driving_distance('
SELECT ogc_fid AS id,
source::int4 AS source,
target::int4 AS target,
traveltime::float8 AS cost
FROM strassenl_dachraum_erweitert_ohne_autobahn',
25080,
60,
false,
false)) AS route
ON
vertices_tmp.id = route.vertex_id
Schritt 1 muss circa 500 Mal mit anderen Werten durchgef�hrt werden, wobei sich der Tabellenname aus tabelle_+ aufsteigendem Zahlenwert zusammensetzen soll. Au�erdem muss die in der Abfrage rot makierte ID-Zahl aus einer anderen Tabelle (vertices_tmp) geholt werden.
Wie muss der Code aussehen, damit die Tabellennamen und die Zahlen nacheinander in die Abfrage eingebaut werden?
Schritt 2:
CREATE TABLE catchment_union AS
SELECT id,the_geom,cost FROM tabelle_1
UNION ALL
SELECT id,the_geom,cost FROM tabelle_2
UNION ALL
SELECT id,the_geom,cost FROM tabelle_3
...
...
In Schritt 2 werden die in Schritt 1 erstellten Tabellen mit UNION zusammengef�hrt.
Wie k�nnen die Tabellennamen automatisiert eingef�gt werden?
Ich habe nur wenig Wissen zu SQL und bin f�r jede Hilfe dankbar.
Viele Gr��e
Ludger
Warum willst Du 500 identische Tabellen anlegen? Das macht doch gar keinen Sinn?
A SQL query walks into a bar and sees two tables. He walks up to them and says 'Can I join you?'
Die Tabellen sind ja nicht identisch. Durch die geaenderte ID-Zahl wird ueber driving_distance jeweils eine Tabelle mit unterschiedlichen Werten angelegt. Driving_distance ist eine Funktion von pgrouting mit der die Fahrtzeit zu einem Punkt in einem Netzwerk ermittelt werden kann. Und je nach Lage des Punktes, ergeben sich andere Fahrtzeiten.
--
https://www.xing.com/profile/Andreas_Kretschmer7ads Das hatte dir akretschmer gestern schon gesagt und siehe da sobald du das machst, funktioniert es ;-)
A SQL query walks into a bar and sees two tables. He walks up to them and says 'Can I join you?'
Hallo castorp,
Danke für Deine Anmerkungen. Ich packe jetzt alles in eine Tabelle. Bleibt mir nur noch das Problem, wie ich die ID-Zahlen aus einer anderen Tabelle in die Abfrage bekomme. Die Abfrage muss ja jeweils mit einer anderen ID-Zahl berechnet werden, solange bis alle ID-Zahlen durchgelaufen sind.
Du könntest das als Stored Precedure auslegen.
Xandrian: Kurz gesagt: Du hast ein falsches Konzept und willst nicht auf ads hören
Jetzt NEU: PostgreSQL - Datenbankpraxis für Anwender, Administratoren und Entwickler
PostgreSQL Service & Support
Kannst Du das näher erläutern, da ich mit Stored Procedures noch nie gearbeitet habe.
Das ist recht gut hier erläutert: PostgreSQL: Documentation: Manuals: PostgreSQL 9.0: PL/pgSQL - SQL Procedural Language
Andreas
--
https://www.xing.com/profile/Andreas_Kretschmer7ads Das hatte dir akretschmer gestern schon gesagt und siehe da sobald du das machst, funktioniert es ;-)
Ich habe jetzt versucht die ID-Zahlen aus der Tabelle mittels eines Cursors in meine Abfrage zu übertragen. Meine Cursor-Funktion gibt mir aber immer nur den ersten Wert zurück. Ich habe gedacht, dass der Cursor alle Zahlen übermittelt und diese dann nacheinander in meine Abfrage einfügt und meine Abfrage mit der jeweils neuen Zahl durchgeführt wird. Ist meine Herangehensweise mit Cursorn und eventuell Loops zu arbeiten richtig oder habe ich den falschen Weg eingeschlagen? Ist es überhaupt möglich einer SELECT-Anweisung automatisiert Werte zu übermitteln, mit denen dann jeweils Abfragen durchgeführt werden, deren Ergebnisse in eine gemeinsame Tabelle geschrieben werden?
Meine Cursor-Funktion:
CREATE OR REPLACE FUNCTION user_x (integer)
RETURNS integer
LANGUAGE plpgsql
AS $function$
DECLARE
x_cursor refcursor;
ergebnis integer;
BEGIN
RAISE INFO 'Cursor ungebunden';
OPEN x_cursor FOR SELECT nearest_node FROM autobahn_anschluesse ORDER BY nearest_node;
FETCH x_cursor INTO ergebnis;
RETURN ergebnis;
CLOSE x_cursor ;
END
$function$
Links: Tobias Bauer - IT- und Funkdienstleistungen - Bilderrahmen-kaufen.de - Der Onlineshop für Bilderrahmen & Fotorahmen - Funkforum
Lesezeichen