Delphi-PRAXiS
Seite 2 von 3     12 3      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   Delphi PostgreSQL - Abfrage aus 2 Tabellen (https://www.delphipraxis.net/119487-postgresql-abfrage-aus-2-tabellen.html)

Trigger2003 27. Aug 2008 14:25

Re: PostgreSQL - Abfrage aus 2 Tabellen
 
Zitat:

Zitat von NetSonic
Die Testdaten sind in Ordnung. Bei einem normalen Select zeigt er mir ja auch die "GroupID" an. Daran kann es nicht liegen :gruebel:

Sorry, will ja nicht klugsch..., aber das reine Vorhandensein der Spalte GroupID ist kein Argument. Entscheidend ist, daß zu den Werten in tbladress.GroupID auch entprechende Einträge in tbladress_group.GroupID vorhanden sind. Oder meintest Du das?

NetSonic 27. Aug 2008 14:31

Re: PostgreSQL - Abfrage aus 2 Tabellen
 
Zitat:

Zitat von Trigger2003
Sorry, will ja nicht klugsch..., aber das reine Vorhandensein der Spalte GroupID ist kein Argument. Entscheidend ist, daß zu den Werten in tbladress.GroupID auch entprechende Einträge in tbladress_group.GroupID vorhanden sind. Oder meintest Du das?

Die Tabellen enthalten die folgenden Werte:

tbladress
--------------------------
AdressNo + GroupID + Name1
--------------------------
1000 + 1 + TestA
1001 + 1 + TestB
1005 + 2 + TestC
1009 + 1 + TestD

tbladress_groups
-------------------
GroupID + GroupName
-------------------
1 + Autoren
2 + Admins

Meiner Ansicht nach, sind also alle Werte vorhanden. Nur das Select-Statement hat einen Fehler... den ich nicht finde! :wall:

Trigger2003 27. Aug 2008 14:33

Re: PostgreSQL - Abfrage aus 2 Tabellen
 
Nur 'ne Idee:

Da GroupID in beiden Tabellen enthalten ist, würde ich's mal aus Gründen der Eindeutigkeit mit Alias versuchen, wie mirage das schon angeregt hat:

SQL-Code:
SELECT      
ta.*,
tag.GroupName
FROM tbladress ta
LEFT OUTER JOIN tbladress_groups tag ON tag."GroupID" = ta."GroupID"

DeddyH 27. Aug 2008 14:34

Re: PostgreSQL - Abfrage aus 2 Tabellen
 
Mal von vorn:
SQL-Code:
SELECT A.AdressNo, A.Name1, G.Groupname
FROM tbladress A
LEFT JOIN tbladress_groups G ON G.GroupdID = A.GroupID
[edit] :oops: Zu langsam [/edit]

NetSonic 27. Aug 2008 14:46

Re: PostgreSQL - Abfrage aus 2 Tabellen
 
SQL-Code:
SELECT A."AdressNo", A."Name1", G."GroupName"
FROM tbladress A
LEFT JOIN tbladress_groups G ON 'G."GroupID"' = A."GroupID"
Führt zu folgendem Ergebnis:

AdressNo + Name1 + GroupName
----------------------------
1001 + TestA +
1002 + TestB +
1005 + TestC +
1009 + TestD +

Das Feld "GroupName" ist LEER! :|

mirage228 27. Aug 2008 14:49

Re: PostgreSQL - Abfrage aus 2 Tabellen
 
Sicher, dass da Gänsefüßchen hinmüssen? In meinem Buch über PostgreSQL sind keine aufgeführt. Und die Join-Bedingung ist auch geklammert, aber ansonsten genauso wie hier dargestellt...

Trigger2003 27. Aug 2008 14:51

Re: PostgreSQL - Abfrage aus 2 Tabellen
 
Zitat:

Zitat von NetSonic
SQL-Code:
SELECT A."AdressNo", A."Name1", G."GroupName"
FROM tbladress A
LEFT JOIN tbladress_groups G ON 'G."GroupID"' = A."GroupID"

Ähm, woher kommen die single quotes um G."GroupID"? :gruebel:

DeddyH 27. Aug 2008 14:51

Re: PostgreSQL - Abfrage aus 2 Tabellen
 
Ich habe keine Ahnung von PostgreSQL, aber in Firebird wird der Feldname bei der Verwendung von Gänsefüßchen case-sensitive ausgewertet. Vielleicht liegt hier der Fehler?

NetSonic 27. Aug 2008 15:02

Re: PostgreSQL - Abfrage aus 2 Tabellen
 
Ooooooooops... Ich habe den Fehler gefunden! :pale:
Das Feld "GroupID" in der Tabelle "tbladress" war vom Typ "character" während in der Tabelle "tbladress_groups" das Feld "GroupID" vom Typ "integer" ist. Das kann ja auch nicht wirklich gehen. Manchmal ist man echt auf beiden Augen doof... :mrgreen:

Zitat:

Zitat von Trigger2003
Ähm, woher kommen die single quotes um G."GroupID"? :gruebel:

Postgre meckert sonst, dass er den Feldnamen nicht kennt! Deswegen die "" um den Feldnamen.
Danke für Eure Mühe und Geduld!

:dp:

Trigger2003 27. Aug 2008 15:05

Re: PostgreSQL - Abfrage aus 2 Tabellen
 
Zitat:

Zitat von DeddyH
Ich habe keine Ahnung von PostgreSQL, aber in Firebird wird der Feldname bei der Verwendung von Gänsefüßchen case-sensitive ausgewertet. Vielleicht liegt hier der Fehler?

Habe auch keine Ahnung von PostgreSQL, deshalb hier geklaut aus:
PostgreSQL SQL Syntax


Here are a few examples of both valid and invalid names:
  • my_table -- valid
    my_2nd_table -- valid
    échéanciers -- valid: accented and non-Latin letters are allowed
    "2nd_table" -- valid: quoted identifier
    "create table" -- valid: quoted identifier
    "1040Forms" -- valid: quoted identifier
    2nd_table -- invalid: does not start with a letter or an underscore

Double quotes um Feldnamen scheinen also erlaubt zu sein.


Alle Zeitangaben in WEZ +1. Es ist jetzt 03:18 Uhr.
Seite 2 von 3     12 3      

Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz