Query Abfrage Verhalten

Hallo,
ich bin Neuling auf dem Gebiet der SQL Abfrage und hatte mir von pgadmin
Unterstützung erwartet, um die Daten meiner Wetterdatenbank selektieren zu können.

In der Datenbank sind die Wetterdaten in Tables , airpressure,outsite_temp etc. nach dem Muster savetime,weatherdata gespeichert.

Wenn ich mit dem graphischen Abfragegenerator eine Anfrage für ein Table z.B. Airpressure starte (savetime und weatherdata angeklickt) gelingt die Abfrage sofort.

Die Frage ist nun wie kann ich aus verschiedenen tables die weatherdata ziehen, denn der timestamp savetime ist ja bei allen Datensätzen identisch.
Beispiel:
SELECT
outside_temp.savetime,
outside_temp.weatherdata,
airpressure.weatherdata
FROM
public.airpressure,
public.outside_temp
WHERE
outside_temp.savetime BETWEEN DATE’2011-01-01’ AND DATE’2011-01-31’
and extract(hour FROM outside_temp.savetime) BETWEEN 8 and 18;

Wenn ich diese Abfrage starte, läuft diese unendlich…

Wichtig wäre für mich die Daten verschiedener tables zusammenfassen zu können, um diese dann als csv Datei zu exportieren.

Ich hoffe ihr könnt mich hier unterstützen.

L.G. Guido

Du machst da einen CROSS-JOIN. Angenommen, beide Tabellen enthalten je 1000 Zeilen, dann kommst Du auf 1000 * 1000 Zeilen Resultat. Vermutlich willst Du das nicht.

Daher: mache Dich schlau, was ein JOIN ist.

Andreas

Ich verstehe dein Problem aktuell nicht. Eigentlich hast du den Join für deine Daten schon in deinem Beispiel gebracht.

Okay ein join soll die Datensätze miteinander verbinden, aber wenn ich in pgadmin
mit dem graphischen Abfragegenerator zwei table in das query Fenster ziehe, dürfte ich doch davon ausgehen das der join automatisch generiert wird …oder vielleicht nicht ??

Ich bin der sql Sprache halt nicht mächtig :frowning:
Beipsiel was pdadmin aus der graphischen Abfrage macht:
SELECT
airpressure.savetime,
airpressure.weatherdata,
rainfall.raincounter,
rainfall.counteramount
FROM
public.airpressure,
public.rainfall;

Hmm, ja, mein Fehler, akretschmer hat mich gerade drauf hingewiesen.

Dein JOIN wird automatisch generiert. Ein Join enthält alle möglichen Verknüpfungsprodukte.
Was du suchst, ist eine Einschränkung deiner Verknüpfungen, bei denen die rechte Seite gleich der linken Seite ist.

Ja, es wird automatisch ein JOIN gemacht, ein CROSS JOIN. Das passiert, wenn man nicht angibt, wie die Daten der einen Tabelle mit denen der anderen zu verknüpfen sind. Das kann die Datenbank auch nicht erraten.

Gib einfach mal in ein Dir vertrauenswürdige Suchmaschine die Begriffe SQL, LEFT, RIGHT, JOIN und so ein. Es gibt massig Doku zum Thema.

In Deinem Fall willst Du zwei Tabellen so verbinden, daß von tabelle1.spalte1 gleich tabelle2.spalte2 ist. Hilft Dir das weiter?

Andreas

Ja das reicht mir, lieben dank.

pgadmin kann auch mittel graphischen Abfragegenerator die joins herstellen und das kommt dabei heraus:

SELECT
airpressure.savetime,
airpressure.weatherdata,
inside_hum.weatherdata
FROM
public.airpressure,
public.inside_hum
WHERE
airpressure.savetime = inside_hum.savetime;

Lieben Dank

Guido