AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Datenbanken Delphi PostgreSQL - Abfrage aus 2 Tabellen
Thema durchsuchen
Ansicht
Themen-Optionen

PostgreSQL - Abfrage aus 2 Tabellen

Ein Thema von NetSonic · begonnen am 27. Aug 2008 · letzter Beitrag vom 27. Aug 2008
Antwort Antwort
Seite 1 von 3  1 23      
NetSonic

Registriert seit: 10. Mai 2007
124 Beiträge
 
Delphi 10 Seattle Professional
 
#1

PostgreSQL - Abfrage aus 2 Tabellen

  Alt 27. Aug 2008, 12:08
Datenbank: PostgreSQL • Version: 8.3.3 • Zugriff über: ADO
Hallo zusammen...

Leider habe ich gerade eine Denkblockade und brauche vielleicht nur einen kleinen Lösungsansatz:

Ich habe eine PostgreSQL Datenbank mit den Tabellen "tbladress" und "tbladress_groups".

tbladress enthält die Felder: AdressNo, GroupID, Name1, Name2, Name3;
tbladress_groups enthält die Felder: GroupID, GroupName;

Das Feld GroupID enthält jeweils die eindeutige ID einer Gruppe.

Wenn ich jetzt eine SQL-Abfrage ("Select * from tbladress;") mache, dann möchte ich nicht die ID der Gruppe, sondern den Namen der Gruppe aus der der Tabelle "tbladress_groups" angezeigt haben. Wie bekomme ich das hin?
  Mit Zitat antworten Zitat
Benutzerbild von mirage228
mirage228

Registriert seit: 23. Mär 2003
Ort: Münster
3.750 Beiträge
 
Delphi 2010 Professional
 
#2

Re: PostgreSQL - Abfrage aus 2 Tabellen

  Alt 27. Aug 2008, 12:18
Ungetestet:
Code:
SELECT
  ta.*, tbg.GroupName
FROM
  tbladress ta, tbladress_groups tbg
WHERE
  ta.GroupID = tbg.GroupID
Überall wo ein Gruppenname zu der ID existiert, werden nun auch die Datensätze dazu selektiert.

Möchtest Du auch Datensätze ohne zugehörigen Eintrag in der Gruppen-Tabelle, musst Du einen expliziten JOIN benutzen
David F.

May the source be with you, stranger.
PHP Inspection Unit (Delphi-Unit zum Analysieren von PHP Code)
  Mit Zitat antworten Zitat
NetSonic

Registriert seit: 10. Mai 2007
124 Beiträge
 
Delphi 10 Seattle Professional
 
#3

Re: PostgreSQL - Abfrage aus 2 Tabellen

  Alt 27. Aug 2008, 12:28
Naja, es ist so dass die Datensätze in der "tbladress" nicht alle einer Gruppe zugeordnet sind. Ich möchte aber natürlich alle Datensätze eingezeigt bekommen und da, wo eine "GroupID" zugeordnet ist, soll der "GroupName" stehen, bei den anderen fehlt diese Info dann und die Spalte bleibt leer. Dein Beispiel gibt mir die Datensätze aus, allerding mehrfach und ordnet den Zeilen, in denen keine "GroupID" vorhanden ist trotzdem einen "GroupName" zu. Wie muss ich das mit JOIN angehen?
  Mit Zitat antworten Zitat
Angel4585

Registriert seit: 4. Okt 2005
Ort: i.d.N.v. Freiburg im Breisgau
2.199 Beiträge
 
Delphi 2010 Professional
 
#4

Re: PostgreSQL - Abfrage aus 2 Tabellen

  Alt 27. Aug 2008, 12:30
versuchs mal mit nem Left outer join

quatsch.. äh en inner join wars glaub ich
Martin Weber
Ich bin ein Rüsselmops
  Mit Zitat antworten Zitat
NetSonic

Registriert seit: 10. Mai 2007
124 Beiträge
 
Delphi 10 Seattle Professional
 
#5

Re: PostgreSQL - Abfrage aus 2 Tabellen

  Alt 27. Aug 2008, 12:40
Mein Ansatz sieht jetzt so aus, allerdings bekomme ich so keine Datensätze zurück... *grübel*

SQL-Code:
SELECT      
tbladress.*,
tbladress_groups.*
FROM tbladress
INNER JOIN tbladress_groups ON tbladress."GroupID" = tbladress_groups."GroupID";
  Mit Zitat antworten Zitat
Benutzerbild von mirage228
mirage228

Registriert seit: 23. Mär 2003
Ort: Münster
3.750 Beiträge
 
Delphi 2010 Professional
 
#6

Re: PostgreSQL - Abfrage aus 2 Tabellen

  Alt 27. Aug 2008, 12:42
Nimm mal LEFT OUTER JOIN
David F.

May the source be with you, stranger.
PHP Inspection Unit (Delphi-Unit zum Analysieren von PHP Code)
  Mit Zitat antworten Zitat
NetSonic

Registriert seit: 10. Mai 2007
124 Beiträge
 
Delphi 10 Seattle Professional
 
#7

Re: PostgreSQL - Abfrage aus 2 Tabellen

  Alt 27. Aug 2008, 12:53
Dann zeigt er mir zwar wieder alle Datensätze korrekt an, aber die Spalte "GroupName" bleibt leer, egal ob eine "GroupID" vorhanden ist oder nicht...

SQL-Code:
SELECT      
tbladress.*,
tbladress_groups.*
FROM tbladress
LEFT OUTER JOIN tbladress_groups ON tbladress."GroupID" = tbladress_groups."GroupID";
Muss ich hier noch was umbauen oder wo liegt mein Fehler?
  Mit Zitat antworten Zitat
Trigger2003

Registriert seit: 14. Jun 2006
36 Beiträge
 
Delphi 12 Athens
 
#8

Re: PostgreSQL - Abfrage aus 2 Tabellen

  Alt 27. Aug 2008, 14:05
Zitat von NetSonic:
Dann zeigt er mir zwar wieder alle Datensätze korrekt an, aber die Spalte "GroupName" bleibt leer, egal ob eine "GroupID" vorhanden ist oder nicht...

Muss ich hier noch was umbauen oder wo liegt mein Fehler?
Kann IMHO nur bedeuten, daß in Deiner tbladress.GroupID zum Abfragezeitpunkt kein einziger gültiger Bezug auf tbladress_groups enthalten ist. Vielleicht die Testdaten nochmal kurz checken . Daher vermutlich auch kein Resultat mit INNER JOIN, das nur Datensätze zurückliefert, die erfolgreich ge-JOINed werden konnten.

PS: Statt "LEFT OUTER JOIN" kann man normalerweise auch nur "LEFT JOIN" schreiben. Das "OUTER" versteht sich an dieser Stelle von selbst. Auch statt "INNER JOIN" tut's meist schlicht "JOIN". Man ist ja schreibfaul...
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.624 Beiträge
 
Delphi 12 Athens
 
#9

Re: PostgreSQL - Abfrage aus 2 Tabellen

  Alt 27. Aug 2008, 14:06
Wozu eigentlich die Gänsefüßchen in der Abfrage?
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
NetSonic

Registriert seit: 10. Mai 2007
124 Beiträge
 
Delphi 10 Seattle Professional
 
#10

Re: PostgreSQL - Abfrage aus 2 Tabellen

  Alt 27. Aug 2008, 14:15
Zitat von Trigger2003:
Kann IMHO nur bedeuten, daß in Deiner tbladress.GroupID zum Abfragezeitpunkt kein einziger gültiger Bezug auf tbladress_groups enthalten ist. Vielleicht die Testdaten nochmal kurz checken . Daher vermutlich auch kein Resultat mit INNER JOIN, das nur Datensätze zurückliefert, die erfolgreich ge-JOINed werden konnten.
Die Testdaten sind in Ordnung. Bei einem normalen Select zeigt er mir ja auch die "GroupID" an. Daran kann es nicht liegen

Zitat von DeddyH:
Wozu eigentlich die Gänsefüßchen in der Abfrage?
Postgre möchte das gerne so...
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 3  1 23      


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 03:16 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz