AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Datenbanken Delphi Select mit Unterabfrage??

Select mit Unterabfrage??

Ein Thema von TankWart · begonnen am 22. Jan 2007 · letzter Beitrag vom 22. Jan 2007
Antwort Antwort
TankWart

Registriert seit: 25. Feb 2005
46 Beiträge
 
#1

Select mit Unterabfrage??

  Alt 22. Jan 2007, 16:59
Datenbank: Firebird • Version: 1.5 • Zugriff über: ZEOS
Hallo Leute,
ich brauch schon wieder mal Hilfe.

Ich möchte aus einer Tabelle "sportler" alle Sportler anzeigen lassen,
und bei jedem Sportler der an einer bestimmten Veranstaltung teilnimmt,
das Feld "teilnehmen" mit Ja füllen.

So in der Art:
Zeig mir alle Teilnehmer
Wenn ein Teilnehmer an Veranstaltung 2 teilnimmt,
zeig mir im Feld Teilnehmen Ja.

Delphi-Quellcode:
SELECT * FROM team t
INNER JOIN team_sportler ts ON
t.TID = ts.TID
INNER JOIN sportler s ON
ts.SID = s.SID
Right OUTER JOIN sportler_event se ON
se.sid = s.sid INNER JOIN event e
ON e.eid = se.eid
Soweit habe ich das schon, das er alle Sportler anzeigt und wenn ein Wert in Tabelle
"event_sportler" vorhanden ist das er den auch mit anzeigt.

Nur, wie mach ich das jetzt, das er halt nur die Werte von "event_sportler" anzeigt,
wenn der Wert von Feld "eid" in "event_sportler" z.B. 2 ist.

Kann man das mit einer Abfrage lösen?
Oder muss ich da was in Delphi schreiben?


Dank schon mal im Voraus


Gruß

TankWart
  Mit Zitat antworten Zitat
hoika

Registriert seit: 5. Jul 2006
Ort: Magdeburg
8.270 Beiträge
 
Delphi 10.4 Sydney
 
#2

Re: Select mit Unterabfrage??

  Alt 22. Jan 2007, 17:24
Hallo,

puh, machst du das kompliziert

Zuerst mal, weg mit dem Select *
das macht das alles viel zu unübersichtlich

Was du hier nehmen solltest, sind subselects und unions.

Bsp (ohne jetzt deine Felder nud Tabellen zu benutzen)

SQL-Code:
Select S1.Name, 1 as Teilnehmen
From Sportler S1
where S1.SportlerId not in
  (select S2.SportlerId From Sportler S2
   join SportlerEvent on SportlerEvent.SportlerId=S2.SportlerId
   where SportlerEvent.EventId=2)

Union All

Select S1.Name, 2 as Teilnehmen
From Sportler S1
where S1.SportlerId in
  (select S2.SportlerId From Sportler S2
   join SportlerEvent on SportlerEvent.SportlerId=S2.SportlerId
   where SportlerEvent.EventId=2)
Erklärung
Die erste Query ermittelt alle Sportler,
die nicht (Not In) in Event 2 sind.
Das 1 as Teilnehmen erzeugt, erzuegt einfach die Zahl1.

Die zweite Query zeigt genau die anderen
Sportler an, die in Event2 waren.

Das Union All verknüpft beide Abfragen.
Es wird die Summe zurückgliefert.


Heiko

PS:
Bei Fragen bitte zuerst mal eine ordentliche Tabellenbeschreibung.
Heiko
  Mit Zitat antworten Zitat
TankWart

Registriert seit: 25. Feb 2005
46 Beiträge
 
#3

Re: Select mit Unterabfrage??

  Alt 22. Jan 2007, 19:07
Danke Hoika,
das war genau das was ich gebraucht habe.

mfg
TankWart

  Mit Zitat antworten Zitat
Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Ansicht

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 18:53 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