AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Datenbanken Firebird: MINUS bzw. EXCEPT
Thema durchsuchen
Ansicht
Themen-Optionen

Firebird: MINUS bzw. EXCEPT

Ein Thema von fkerber · begonnen am 21. Jul 2009 · letzter Beitrag vom 21. Jul 2009
Antwort Antwort
Seite 2 von 2     12   
TBx
(Administrator)

Registriert seit: 13. Jul 2005
Ort: Stadthagen
1.875 Beiträge
 
Delphi 12 Athens
 
#11

Re: Firebird: MINUS bzw. EXCEPT

  Alt 21. Jul 2009, 09:50
Hier mal die beiden Versionen im Vergleich:

select persnr from assistenten a where not exists (select persnr from assistenten s WHERE s.persnr >a.boss)
SQL-Code:
select a1.* from ass a1
where not exists
(select a2.assnr from ass a2
  where (a2.assnr>=a2.bossnr) and
  (a2.bossnr=a1.bossnr))
Warum die erste Version bei Dir kein Ergebnis geliefert hat, ist mir ein Rätsel.

Richtig ist allerdings das zweite Statement. In dem ersten Statement überprüfst Du nur, ob es irgendeine Persnr ist, die größer der aktuellen bossnr gibt, in der zweiten wird wie gewollt überprüft, ob es eine persnr gibt, die dem aktuellen boss zugeordnet ist und diese dann größer der aktuellen bossnr ist.

Hoffe das hilft Dir weiter.

Gruß
Thomas
Thomas Breitkreuz
Gruß Thomas
- Admin DelphiPRAXIS
- Admin Delphi-Treff
- Embarcadero MVP
  Mit Zitat antworten Zitat
Benutzerbild von fkerber
fkerber
(CodeLib-Manager)

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

Re: Firebird: MINUS bzw. EXCEPT

  Alt 21. Jul 2009, 10:09
Hi!

Danke für die Erläuterungen - also von den geposteten Anfragen funktioniert in der Tat nur die hier:

SQL-Code:
select a1.* from ass a1
where not exists
(select a2.assnr from ass a2
  where (a2.assnr>=a2.bossnr) and
  (a2.bossnr=a1.bossnr))
Alle anderen liefern leere Resultate.

Es handelt sich um Firebird 2.1.2.18118

Grüße, Frederic
Frederic Kerber
  Mit Zitat antworten Zitat
Blup

Registriert seit: 7. Aug 2008
Ort: Brandenburg
1.429 Beiträge
 
Delphi 10.4 Sydney
 
#13

Re: Firebird: MINUS bzw. EXCEPT

  Alt 21. Jul 2009, 12:52
Das SQL Nr.1 nicht funktioniert ist nur logisch.
Die Unterabfrage lautet:
Existiert irgendeine "persnr" die größer ist als die "persnr" des in der Hauptabfrage gerade bearbeiteten Bosses.
Wenn der Boss nicht gerade die höchste Nummer in der gesamten Tabelle hat, ist diese Bedingung immer erfüllt.
Dann wird das Ergebnis negiert und darum der Datensatz der Hauptabfrage verworfen.

Im SQL Nr.2 wird die Unterabfrage auf die Personen eingeschränkt, denen tatsächlich diesem Boss zugeordnet ist.
  Mit Zitat antworten Zitat
Benutzerbild von fkerber
fkerber
(CodeLib-Manager)

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

Re: Firebird: MINUS bzw. EXCEPT

  Alt 21. Jul 2009, 13:23
Hi!

Danke für deine Erläuterung - das erscheint mir jetzt auch durchaus logisch - aber wieso geht es dann bei Heiko?


Grüße, Frederic
Frederic Kerber
  Mit Zitat antworten Zitat
TBx
(Administrator)

Registriert seit: 13. Jul 2005
Ort: Stadthagen
1.875 Beiträge
 
Delphi 12 Athens
 
#15

Re: Firebird: MINUS bzw. EXCEPT

  Alt 21. Jul 2009, 13:39
Hallo Frederic,

enthält Deine Tabelle tatsächlich nur diese Daten:
Zitat:
PersNR, Name, Boss
1111, Meier, 2345
2456, Schmidt, 2345
3456, Müller, 5555
3457, Maus, 5555

select persnr from assistenten a where not exists (select persnr from assistenten s WHERE s.persnr >a.boss) findet nun für die beiden letzten Datensätze keinen Datensatz, bei dem die Persnr > der bossnr (5555) ist. Also gibt es ein Ergebnis.
Dieses entspräche in dieser Abfrage zufällig dem richtigen Ergebnis.

Fügst Du jetzt aber folgenden Datensatz an, gibt es eine leere Erbebnismenge:
Zitat:
5556, Kerber, 5555
Fügst Du
Zitat:
1112, Wolf, 2346
ein, liefert Dein Statement ein falsches Ergebnis. Der Datensatz soll nach Deinen Erläuterungen ausgegeben werden, wird es aber nicht, da es eine PersNr gibt, die > 2346 ist (aber dieser ist kein Boss < 2346 zugeordnet).

Hilft Dir das weiter?
Thomas Breitkreuz
Gruß Thomas
- Admin DelphiPRAXIS
- Admin Delphi-Treff
- Embarcadero MVP
  Mit Zitat antworten Zitat
Benutzerbild von fkerber
fkerber
(CodeLib-Manager)

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

Re: Firebird: MINUS bzw. EXCEPT

  Alt 21. Jul 2009, 14:37
Hi!

Ah, dann war es quasi Zufall...
Das hier gepostete war nur ein Teil der Ausprägung, die in der Testtabelle drin sind.
Vielen Dank für die ausführliche Erläuterung.

Grüße, Frederic
Frederic Kerber
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 2 von 2     12   


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 19:00 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