Query Abfrage Verhalten

Alle Fragen, Probleme, etc. zu PGAdmin kommen hier rein.

Query Abfrage Verhalten

Beitragvon guma96 » Sa 19. Mär 2011, 14:23

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
guma96
Neuer Benutzer
 
Beiträge: 5
Registriert: Sa 5. Mär 2011, 16:58

Beitragvon akretschmer » Sa 19. Mär 2011, 14:35

guma96 hat geschrieben: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
--
ads Das hatte dir akretschmer gestern schon gesagt und siehe da sobald du das machst, funktioniert es ;-)

https://www.xing.com/profile/Andreas_Kretschmer7
Hosting-Provider mit PostgreSQL-Support gesucht? Mich fragen!
akretschmer
Erfahrener Benutzer
 
Beiträge: 5936
Registriert: So 29. Okt 2006, 14:35
Wohnort: Kaufbach, Sachsen, Germany, Germany

Beitragvon ads » Sa 19. Mär 2011, 14:35

Ich verstehe dein Problem aktuell nicht. Eigentlich hast du den Join für deine Daten schon in deinem Beispiel gebracht.
Xandrian: Kurz gesagt: Du hast ein falsches Konzept und willst nicht auf ads hören Bild

Jetzt NEU: PostgreSQL - Datenbankpraxis für Anwender, Administratoren und Entwickler

PostgreSQL Service & Support
ads
Erfahrener Benutzer
 
Beiträge: 4147
Registriert: Mi 8. Feb 2006, 11:58
Wohnort: MD

Beitragvon guma96 » Sa 19. Mär 2011, 14:55

ads hat geschrieben: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 :-(
Beipsiel was pdadmin aus der graphischen Abfrage macht:
SELECT
airpressure.savetime,
airpressure.weatherdata,
rainfall.raincounter,
rainfall.counteramount
FROM
public.airpressure,
public.rainfall;
guma96
Neuer Benutzer
 
Beiträge: 5
Registriert: Sa 5. Mär 2011, 16:58

Beitragvon ads » Sa 19. Mär 2011, 15:02

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.
Xandrian: Kurz gesagt: Du hast ein falsches Konzept und willst nicht auf ads hören Bild

Jetzt NEU: PostgreSQL - Datenbankpraxis für Anwender, Administratoren und Entwickler

PostgreSQL Service & Support
ads
Erfahrener Benutzer
 
Beiträge: 4147
Registriert: Mi 8. Feb 2006, 11:58
Wohnort: MD

Beitragvon akretschmer » Sa 19. Mär 2011, 15:11

guma96 hat geschrieben: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 ??



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
--
ads Das hatte dir akretschmer gestern schon gesagt und siehe da sobald du das machst, funktioniert es ;-)

https://www.xing.com/profile/Andreas_Kretschmer7
Hosting-Provider mit PostgreSQL-Support gesucht? Mich fragen!
akretschmer
Erfahrener Benutzer
 
Beiträge: 5936
Registriert: So 29. Okt 2006, 14:35
Wohnort: Kaufbach, Sachsen, Germany, Germany

Beitragvon guma96 » Sa 19. Mär 2011, 16:40

akretschmer hat geschrieben:
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
guma96
Neuer Benutzer
 
Beiträge: 5
Registriert: Sa 5. Mär 2011, 16:58


Zurück zu PGAdmin

Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 0 Gäste

cron