Delphi-PRAXiS :: Das Forum für Fragen zu Delphi
Das Experten Forum für Delphi Programmierer
Hilfe für Borland Delphi gibts es hier im Forum
Delphi Quelltexte und Source Codes
 
Delphi-PRAXiS :: Foren-ÜbersichtForen-Übersicht Delphi-PRAXiS Modul-ÜbersichtSite-Map Delphi-PRAXiS durchsuchenSuchen Delphi-PRAXiS Code-LibraryCode-Library Jetzt registrieren!Registrieren Login  
   
 
0
 
Delphi für Win32
SQL- Daten aus 3 Tabellen auslesen
Ein Delphi (Win32)-Thema von Andi_j62.

Vorheriges Thema anzeigen  |  Nächstes Thema anzeigen
Neuen Beitrag schreiben Auf Beitrag antworten
als PDF-Datei herunterladenThema ausdrucken
 
Delphi-PRAXiS Forum - Übersicht -> Datenbanken
Seite 1 von 1   [ 15 Beiträge ]  
 
 Autor 
 Nachricht 
 
Andi_j62 #1|Beitrag #910937Verfasst am: 01.07.2008, 14:38      Titel: SQL- Daten aus 3 Tabellen auslesen Antworten mit Zitat
Mitglied
Alter: 46
Status: offline
Beiträge: 44
angemeldet: 20.10.2003
Wohnort: Kempten
Delphi 7 Professional

Sprache: Delphi (Win32)
Datenbank: Oracle, Zugriff über: ODBC

Hallo Zusammen,

ich habe ein kleines Problem und hoffe dass mir jemand helfen kann. Ich möchte aus 3 Tabellen Daten auslesen und habe Euch die Struktur unten mal vereinfacht dargestellt.

Tabelle 1
id (eindeutig)

Tabelle 2
id (eindeutig)
vorname
nachname

Tabelle 3
id (kommt mehrfach vor)
bereich

Es soll nun die Tabelle 1 abgearbeitet und die anderen Daten dazugespielt werden. Wobei die Anzahl der Datensätze denen der Tabelle 1 entsprechen soll.

id, vorname, nachname, bereich

Das Problem liegt darin, dass es in der Tabelle 3 mehrere Datensätze mit der gleichen id geben kann, wobei aber im feld "bereich" immer der gleicher Inhalt steht.

Wenn ich nun folgende Abfrage durchführe:

select t1.id, t2.vorname, t2.nachname, t3.bereich from
tabelle1 t1
left outer join tabelle2 t2
on t2.id=t1.id
left outer join tabelle3 t3
on t3.id=t1.id

bekomme ich zwar alle Daten, aber wenn z.B. in der Tabelle 3 5 Datensätze mit gleicher id sind, werden auch 5 Datensätze ausgegeben und das will ich nicht!

Vielleicht kann mir ja jemand helfen. Danke!

Viele Grüße
Andi
nach oben nach unten
Benutzer-Profile anzeigen Private Nachricht senden
Markiere Begriffe im Text und klicke auf diesen Button, um nach zusätzlichen Informationen im Forum zu suchen. Markiere Begriffe im Text und klicke auf diesen Button, um nach zusätzlichen Informationen bei Google zu suchen. Markiere Begriffe im Text und klicke auf diesen Button, um nach zusätzlichen Informationen bei Wikipedia zu suchen.
 
 
mquadrat #2|Beitrag #910944Verfasst am: 01.07.2008, 14:49      Titel: Re: SQL- Daten aus 3 Tabellen auslesen Antworten mit Zitat
Mitglied
Alter: 26
Status: offline
Beiträge: 350
angemeldet: 13.02.2004
Delphi 2007 Professional

Wenn der Inhalt im Feld "Bereich" immer gleich ist, solltest du dir mal das Schlüsselwort distinct anschauen.
nach oben nach unten
Benutzer-Profile anzeigen Private Nachricht senden
Markiere Begriffe im Text und klicke auf diesen Button, um nach zusätzlichen Informationen im Forum zu suchen. Markiere Begriffe im Text und klicke auf diesen Button, um nach zusätzlichen Informationen bei Google zu suchen. Markiere Begriffe im Text und klicke auf diesen Button, um nach zusätzlichen Informationen bei Wikipedia zu suchen.
 
 
mkinzler #3|Beitrag #910957Verfasst am: 01.07.2008, 15:17      Titel: Re: SQL- Daten aus 3 Tabellen auslesen Antworten mit Zitat
sehr aktives Mitglied
Status: offline
Beiträge: 18.802
angemeldet: 09.12.2005
Wohnort: Heilbronn
RAD-Studio 2007 Professional

Oder eine Gruppierung durchführen
nach oben nach unten
Benutzer-Profile anzeigen Private Nachricht senden
Markiere Begriffe im Text und klicke auf diesen Button, um nach zusätzlichen Informationen im Forum zu suchen. Markiere Begriffe im Text und klicke auf diesen Button, um nach zusätzlichen Informationen bei Google zu suchen. Markiere Begriffe im Text und klicke auf diesen Button, um nach zusätzlichen Informationen bei Wikipedia zu suchen.
 
 
marabu #4|Beitrag #910959Verfasst am: 01.07.2008, 15:23      Titel: Re: SQL- Daten aus 3 Tabellen auslesen Antworten mit Zitat
sehr aktives Mitglied
Status: offline
Beiträge: 10.014
angemeldet: 06.04.2005
Wohnort: Limburg (Lahn)
Delphi 7 Architect

Hallo Andi,

mir sind bisher zwei Ansätze dazu begegnet:

SQL-Code: markieren
select t1.id, t2.vorname, t2.nachname,
/* new fashion:  TO_STRING(CAST(COLLECT(t3.bereich) AS varchar2_ntt)) AS bereiche */
/* old fashion:  NVL(concat_all(concat_expr(t3.bereich, ',')), '-/-') bereiche */
from tabelle1 t1
left outer join tabelle2 t2 on t2.id=t1.id
left outer join tabelle3 t3 on t3.id=t1.id

Freundliche Grüße


Nachtrag: Ich habe das Problem so verstanden, dass Tabelle t3 einen Beziehungsdatentyp m:n implementiert. Dabei können mehrere verschiedene Bereiche einem ID zugeordnet sein, PK wäre dann (id, bereich).

 Zuletzt bearbeitet von marabu am 01.07.2008, 15:45, insgesamt 1-mal bearbeitet.
nach oben nach unten
Benutzer-Profile anzeigen Private Nachricht senden
Markiere Begriffe im Text und klicke auf diesen Button, um nach zusätzlichen Informationen im Forum zu suchen. Markiere Begriffe im Text und klicke auf diesen Button, um nach zusätzlichen Informationen bei Google zu suchen. Markiere Begriffe im Text und klicke auf diesen Button, um nach zusätzlichen Informationen bei Wikipedia zu suchen.
 
 
alphaville #5|Beitrag #910973Verfasst am: 01.07.2008, 15:34      Titel: Re: SQL- Daten aus 3 Tabellen auslesen Antworten mit Zitat
Mitglied
Alter: 44
Status: offline
Beiträge: 2
angemeldet: 06.12.2006
Wohnort: Wurmlingen
Delphi 2006 Enterprise

Hi,

den bereich einfach als Subselect ???

select
t1.id,
t2.vorname,
t2.nachname,
(select distinct t3.bereich from tabelle3 t3 where t3.id=t1.id) bereich
tabelle1 t1
left outer join tabelle2 t2
on t2.id=t1.id

Gruß Uwe
nach oben nach unten
Benutzer-Profile anzeigen Private Nachricht senden
Markiere Begriffe im Text und klicke auf diesen Button, um nach zusätzlichen Informationen im Forum zu suchen. Markiere Begriffe im Text und klicke auf diesen Button, um nach zusätzlichen Informationen bei Google zu suchen. Markiere Begriffe im Text und klicke auf diesen Button, um nach zusätzlichen Informationen bei Wikipedia zu suchen.
 
 
Andi_j62 #6|Beitrag #911012Verfasst am: 01.07.2008, 16:45      Titel: Re: SQL- Daten aus 3 Tabellen auslesen Antworten mit Zitat
Mitglied
Alter: 46
Status: offline
Beiträge: 44
angemeldet: 20.10.2003
Wohnort: Kempten
Delphi 7 Professional

Danke erst mal für die Info!

An alphaville habe ich noch eine Frage:

Ich habe das sql-statement mal so umgesetzt, bekomme aber folgende Meldung:

00923: from keyword not found where expected

Kannste bitte noch mal über das sql-statement von Dir schauen, wäre nett!

Gruß Andi
nach oben nach unten
Benutzer-Profile anzeigen Private Nachricht senden
Markiere Begriffe im Text und klicke auf diesen Button, um nach zusätzlichen Informationen im Forum zu suchen. Markiere Begriffe im Text und klicke auf diesen Button, um nach zusätzlichen Informationen bei Google zu suchen. Markiere Begriffe im Text und klicke auf diesen Button, um nach zusätzlichen Informationen bei Wikipedia zu suchen.
 
 
DeddyH #7|Beitrag #911014Verfasst am: 01.07.2008, 16:47      Titel: Re: SQL- Daten aus 3 Tabellen auslesen Antworten mit Zitat
"Rüsselmops" ;-)
Alter: 42
Status: offline
Beiträge: 6.654
angemeldet: 17.09.2006
Wohnort: Schweina/Thüringen
Delphi 2007 Professional

Ich bin zwar nicht alphaville, aber
SQL-Code: markieren
select
t1.id,
t2.vorname,
t2.nachname,
(select distinct t3.bereich from tabelle3 t3 where t3.id=t1.id) bereich
FROM tabelle1 t1
left outer join tabelle2 t2
on t2.id=t1.id

10 Minuten Nachdenken ersparen oftmals 10 Stunden Fehlersuche.
nach oben nach unten
Benutzer-Profile anzeigen Private Nachricht senden
Markiere Begriffe im Text und klicke auf diesen Button, um nach zusätzlichen Informationen im Forum zu suchen. Markiere Begriffe im Text und klicke auf diesen Button, um nach zusätzlichen Informationen bei Google zu suchen. Markiere Begriffe im Text und klicke auf diesen Button, um nach zusätzlichen Informationen bei Wikipedia zu suchen.
 
 
mkinzler #8|Beitrag #911015Verfasst am: 01.07.2008, 16:47      Titel: Re: SQL- Daten aus 3 Tabellen auslesen Antworten mit Zitat
sehr aktives Mitglied
Status: offline
Beiträge: 18.802
angemeldet: 09.12.2005
Wohnort: Heilbronn
RAD-Studio 2007 Professional

Es fehlt einfach ein FROM
SQL-Code: markieren
select
    t1.id,
    t2.vorname,
    t2.nachname,
    (select distinct t3.bereich from tabelle3 t3 where t3.id=t1.id) bereich
from
    tabelle1 t1
        left outer join tabelle2 t2 on t2.id=t1.id;
nach oben nach unten
Benutzer-Profile anzeigen Private Nachricht senden
Markiere Begriffe im Text und klicke auf diesen Button, um nach zusätzlichen Informationen im Forum zu suchen. Markiere Begriffe im Text und klicke auf diesen Button, um nach zusätzlichen Informationen bei Google zu suchen. Markiere Begriffe im Text und klicke auf diesen Button, um nach zusätzlichen Informationen bei Wikipedia zu suchen.
 
 
Andi_j62 #9|Beitrag #911022Verfasst am: 01.07.2008, 17:04      Titel: Re: SQL- Daten aus 3 Tabellen auslesen Antworten mit Zitat
Mitglied
Alter: 46
Status: offline
Beiträge: 44
angemeldet: 20.10.2003
Wohnort: Kempten
Delphi 7 Professional

Danke an alle, aber jetzt habe ich eine andere Fehlermeldung. Ich habe Euch jetzt mal die Originalabfrage, die lautet

select "RL"."INTERNALID" as "INTERNALID",
"PV"."FIRSTNAME" as "VORNAME",
"PV"."LASTNAME" as "NACHNAME",
(select distinct "MV"."CLUB_REGION" from "PUBLIC_MEMBERS_VIEW" "MV"
where "MV"."INTERNAL_ID"="RL"."INTERNALID") bereich
from "BTV_REFEREELICENSE" "RL"
left outer join "PUBLIC_PERSONS_VIEW" "PV"
on "PV"."INTERNAL_ID"="RL"."INTERNALID"


wobei aus dem Beispiel folgende Zuordnung gilt:

tabelle1 -> BTV_REFEREELICENSE
tabelle2 -> PUBLIC_PERSONS_VIEW
tabelle3 -> PUBLIC_MEMBERS_VIEW

Jetzt kommt folgende Fehlermeldung:

01427: single-row subquery returns more than one row

Vielleicht kann mir noch jemand einen Tipp geben, wäre super!
nach oben nach unten
Benutzer-Profile anzeigen Private Nachricht senden
Markiere Begriffe im Text und klicke auf diesen Button, um nach zusätzlichen Informationen im Forum zu suchen. Markiere Begriffe im Text und klicke auf diesen Button, um nach zusätzlichen Informationen bei Google zu suchen. Markiere Begriffe im Text und klicke auf diesen Button, um nach zusätzlichen Informationen bei Wikipedia zu suchen.
 
 
marabu #10|Beitrag #911028Verfasst am: 01.07.2008, 17:25      Titel: Re: SQL- Daten aus 3 Tabellen auslesen Antworten mit Zitat
sehr aktives Mitglied
Status: offline
Beiträge: 10.014
angemeldet: 06.04.2005
Wohnort: Limburg (Lahn)
Delphi 7 Architect

Ganz offensichtlich gibt es mehr als eine CLUB_REGION zu einem bestimmten INTERNAL_ID.

Beschreibe bitte mal die Komplexitäten:

RL (1:0,n) MV | Zu jedem RL können mehrere MV existieren
nach oben nach unten
Benutzer-Profile anzeigen Private Nachricht senden
Markiere Begriffe im Text und klicke auf diesen Button, um nach zusätzlichen Informationen im Forum zu suchen. Markiere Begriffe im Text und klicke auf diesen Button, um nach zusätzlichen Informationen bei Google zu suchen. Markiere Begriffe im Text und klicke auf diesen Button, um nach zusätzlichen Informationen bei Wikipedia zu suchen.
 
 
Andi_j62 #11|Beitrag #911230Verfasst am: 02.07.2008, 08:43      Titel: Re: SQL- Daten aus 3 Tabellen auslesen Antworten mit Zitat
Mitglied
Alter: 46
Status: offline
Beiträge: 44
angemeldet: 20.10.2003
Wohnort: Kempten
Delphi 7 Professional

Hallo marabu,

es gibt zu jedem rl genau einen pv aber mehrere mv. Wobei bei allen mv im Feld "club_region" der gleicher Wert drin steht und den brauche ich aber auch.

Gruß Andi
nach oben nach unten
Benutzer-Profile anzeigen Private Nachricht senden
Markiere Begriffe im Text und klicke auf diesen Button, um nach zusätzlichen Informationen im Forum zu suchen. Markiere Begriffe im Text und klicke auf diesen Button, um nach zusätzlichen Informationen bei Google zu suchen. Markiere Begriffe im Text und klicke auf diesen Button, um nach zusätzlichen Informationen bei Wikipedia zu suchen.
 
 
DeddyH #12|Beitrag #911233Verfasst am: 02.07.2008, 08:54      Titel: Re: SQL- Daten aus 3 Tabellen auslesen Antworten mit Zitat
"Rüsselmops" ;-)
Alter: 42
Status: offline
Beiträge: 6.654
angemeldet: 17.09.2006
Wohnort: Schweina/Thüringen
Delphi 2007 Professional

Andi_j62 hat folgendes geschrieben:
Wobei bei allen mv im Feld "club_region" der gleicher Wert drin steht

Anscheinend nicht.

10 Minuten Nachdenken ersparen oftmals 10 Stunden Fehlersuche.
nach oben nach unten
Benutzer-Profile anzeigen Private Nachricht senden
Markiere Begriffe im Text und klicke auf diesen Button, um nach zusätzlichen Informationen im Forum zu suchen. Markiere Begriffe im Text und klicke auf diesen Button, um nach zusätzlichen Informationen bei Google zu suchen. Markiere Begriffe im Text und klicke auf diesen Button, um nach zusätzlichen Informationen bei Wikipedia zu suchen.
 
 
Andi_j62 #13|Beitrag #911237Verfasst am: 02.07.2008, 09:06      Titel: Re: SQL- Daten aus 3 Tabellen auslesen Antworten mit Zitat
Mitglied
Alter: 46
Status: offline
Beiträge: 44
angemeldet: 20.10.2003
Wohnort: Kempten
Delphi 7 Professional

dann soll einfach die club_region aus dem ersten gefundenen Satz aus mv genommen werden! Kann man das realisieren?
nach oben nach unten
Benutzer-Profile anzeigen Private Nachricht senden
Markiere Begriffe im Text und klicke auf diesen Button, um nach zusätzlichen Informationen im Forum zu suchen. Markiere Begriffe im Text und klicke auf diesen Button, um nach zusätzlichen Informationen bei Google zu suchen. Markiere Begriffe im Text und klicke auf diesen Button, um nach zusätzlichen Informationen bei Wikipedia zu suchen.
 
 
DeddyH #14|Beitrag #911239Verfasst am: 02.07.2008, 09:09      Titel: Re: SQL- Daten aus 3 Tabellen auslesen Antworten mit Zitat
"Rüsselmops" ;-)
Alter: 42
Status: offline
Beiträge: 6.654
angemeldet: 17.09.2006
Wohnort: Schweina/Thüringen
Delphi 2007 Professional

Unter Oracle geht das AFAIK mit ROWNUM. Schau mal hier: http://www.sql-tips.de/index.php/Ausgabebeschr%C3%A4nkung#ORACLE

10 Minuten Nachdenken ersparen oftmals 10 Stunden Fehlersuche.
nach oben nach unten
Benutzer-Profile anzeigen Private Nachricht senden
Markiere Begriffe im Text und klicke auf diesen Button, um nach zusätzlichen Informationen im Forum zu suchen. Markiere Begriffe im Text und klicke auf diesen Button, um nach zusätzlichen Informationen bei Google zu suchen. Markiere Begriffe im Text und klicke auf diesen Button, um nach zusätzlichen Informationen bei Wikipedia zu suchen.
 
 
Andi_j62 #15|Beitrag #911242Verfasst am: 02.07.2008, 09:16      Titel: Re: SQL- Daten aus 3 Tabellen auslesen Antworten mit Zitat
Mitglied
Alter: 46
Status: offline
Beiträge: 44
angemeldet: 20.10.2003
Wohnort: Kempten
Delphi 7 Professional

Danke an alle! Mit ROWNUM klappt es jetzt!
nach oben nach unten
Benutzer-Profile anzeigen Private Nachricht senden
Markiere Begriffe im Text und klicke auf diesen Button, um nach zusätzlichen Informationen im Forum zu suchen. Markiere Begriffe im Text und klicke auf diesen Button, um nach zusätzlichen Informationen bei Google zu suchen. Markiere Begriffe im Text und klicke auf diesen Button, um nach zusätzlichen Informationen bei Wikipedia zu suchen.
 
Anzeige-Optionen:    
 
Delphi-PRAXiS Forum - Übersicht -> Datenbanken Alle Zeiten sind GMT + 1 Stunde
Seite 1 von 1   [ 15 Beiträge ]  
 
  Neuen Beitrag schreiben Auf Beitrag antworten
als PDF-Datei herunterladenThema ausdrucken
 
   
Gehe zu:  
Du darfst keine Beiträge in dieses Forum schreiben.
Du darfst auf Beiträge in diesem Forum nicht antworten.
Du darfst Deine Beiträge in diesem Forum nicht bearbeiten.
Du darfst Deine Beiträge in diesem Forum nicht löschen.
Du darfst an Umfragen in diesem Forum nicht mitmachen.
Du kannst Dateien in diesem Forum nicht posten.
Du kannst Dateien in diesem Forum nicht herunterladen.


Impressum / Kontakt
Allgemeine Geschäftsbedingungen
Verhaltenskodex & FAQ

Delphi-PRAXiS :: Das Forum für Delphi-Programmierer
Das Experten Forum für Delphi ProgrammiererHilfe für Borland Delphi gibts es hier im ForumDelphi Quelltexte und Source CodesDelphi-PRAXiS :: Das Forum für DelphiWindows APIInternet und NetzwerkeVCL und Datenbanken
 

Delphi-PRAXiS V.2005 III
© 2002-2008 by Daniel R. Wolf
powered by phpBB © phpBB Group

Impressum / Kontakt Allgemeine Geschäftsbedingungen