AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Datenbanken Delphi mal wieder ne SQL-Abfrage

mal wieder ne SQL-Abfrage

Ein Thema von tr909 · begonnen am 18. Apr 2006 · letzter Beitrag vom 18. Apr 2006
Antwort Antwort
tr909

Registriert seit: 5. Nov 2004
193 Beiträge
 
Turbo Delphi für Win32
 
#1

mal wieder ne SQL-Abfrage

  Alt 18. Apr 2006, 10:27
Datenbank: access • Version: 2000 • Zugriff über: ADO
Hallo. Ich hänge mal wieder an einer SQL-Abfrage. Ich weiß auch gar nicht, ob das was ich mir wünsche in einer Abfrage möglich ist, aber schön wäre es.
Folgendes ist mein Problem.

Ich habe zwei Tabellen.
Akte und Vorgang.

mit folgenden Feldern

Akte.ID, Akte.Bemerkung
Vorgang.ID, Vorgang.Akte, Vorgang.Typ, Vorgang.Inhalt

Zu jeder Akte gibt es mehrere Vorgänge. In den Vorgängen wird dan die jeweilig Akten-ID in das Feld Akte eingetragen.

Was ich möchte ist folgendes:
Alle Vorgänge von allen Akten, bei denen kein Vorgang eines Bestimmten Typs vorhanden ist.
Also wenn in einer Akte z.B. ein Vorgang vom Typ 'Ende' ist, soll keiner der Vorgänge dieser Akte mit ausgegeben werden.

was ich schonmal probiert habe ist folgendes, aber das Problem ist, daß bei der Unterabfrage mehr wie ein Datensatz zurückgegeben wird. (genau das will ich ja auch)
Code:
SELECT Akte.ID, Akte.Bemerkung, Vorgang.ID, Vorgang.Akte, Vorgang.Typ, Vorgang.Inhalt
FROM Akte INNER JOIN Vorgang ON Akte.ID = Vorgang.Akte where Akte.ID <> (SELECT Akte.ID FROM Akte INNER JOIN Vorgang ON Akte.ID = Vorgang.Akte where Vorgang.Typ <> 'Ende');

Bin für jeden Tip dankbar.

Gruß
tr909

*edit*
Sollte natürlich auch Vorgang.Typ heißen. Funzt aber trotzdem nicht
  Mit Zitat antworten Zitat
Benutzerbild von fkerber
fkerber
(CodeLib-Manager)

Registriert seit: 9. Jul 2003
Ort: Ensdorf
6.723 Beiträge
 
Delphi XE Professional
 
#2

Re: mal wieder ne SQL-Abfrage

  Alt 18. Apr 2006, 10:30
HI!

Keine Ahnung, obs daran liegt, aber du schreibst immer Akte.xxx oder Vorgang.xxx, nur beim letzten steht einfach nur Typ.


Ciao Frederic
Frederic Kerber
  Mit Zitat antworten Zitat
trashcandesign

Registriert seit: 21. Feb 2006
Ort: Mühlhausen
187 Beiträge
 
Delphi XE2 Professional
 
#3

Re: mal wieder ne SQL-Abfrage

  Alt 18. Apr 2006, 10:45
Hi, probiers mal anstatt mit
...where Akte.ID <> (SELECT ... lieber mit
...where Akte.ID not in (SELECT ... Gruß
trashcandesign
  Mit Zitat antworten Zitat
marabu

Registriert seit: 6. Apr 2005
10.109 Beiträge
 
#4

Re: mal wieder ne SQL-Abfrage

  Alt 18. Apr 2006, 10:52
Außerdem lässt sich das bestimmt noch etwas vereinfachen:

SQL-Code:
SELECT ...
FROM vorgaenge v, akten a
WHERE v.akten_id = a.id
AND a.id not in (
  SELECT akten_id FROM vorgaenge sub
  WHERE sub.typ = :typ
)
Grüße vom marabu
  Mit Zitat antworten Zitat
tr909

Registriert seit: 5. Nov 2004
193 Beiträge
 
Turbo Delphi für Win32
 
#5

Re: mal wieder ne SQL-Abfrage

  Alt 18. Apr 2006, 11:06
Ja, das mit dem not in ist es gewesen. Macht ja auch Sinn bei einer Ergebiss-Menge.
Die Version von Marabu ist auch noch um einiges schneller als meine Variante. Habe meine nach ca 10. Minuten unter Vollast abgebrochen, da ich bis dahin noch kein Resultat hatte, bei der anderen hab ich aber schon nach kurzer Zeit was auf dem Schirm gehabt.

Tausend Dank.

*EDIT*
Habe gerade gemerkt, das die Geschwindigkeitssteigerung nur direkt in Access aufgetreten ist, bzw. Da schon im vorraus Ein "Teilergebnis" angezeigt wird. mein dataset ist derweil noch stark beschäftigt. Aber Hauptsache ist ich komme an die Daten

Gruß
tr909
  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 09:38 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