AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Datenbanken Delphi Sinn und Zweck von Any??
Thema durchsuchen
Ansicht
Themen-Optionen

Sinn und Zweck von Any??

Offene Frage von "JumpFrog"
Ein Thema von JumpFrog · begonnen am 24. Mär 2009 · letzter Beitrag vom 24. Mär 2009
Antwort Antwort
JumpFrog

Registriert seit: 15. Mär 2009
26 Beiträge
 
#1

Sinn und Zweck von Any??

  Alt 24. Mär 2009, 12:50
Datenbank: MS Access • Zugriff über: mit MS Access
hallo,

ich wollte mal Fragen wozu Any nun genau nützlich ist. In meinen Augen ist Any ja das selbe wie All oder irre ich mich da etwa?

Nehmen wir als Beispiel mal folgendes.
SQL-Code:
SELECT Name,Gehalt
FROM Mitarb
WHERE Gehalt > ANY( SELECT Gehalt FROM Mitarb WHERE abtnr'Kon1');
Worauf genau bezieht sich bitte das Any? Es steht ja schließlich für irgendeiner. Also würde sozusagen ANY irgentein Wert von Gehalt nehmen wo das Kriterium "abtnr'Kon1'" ist und dieses mit allen anderen Vergleichen. Dann wäre das ja reiner Zufall.


Schön dank schon mal für eure Hilfe.

LG JumpFrog
  Mit Zitat antworten Zitat
Benutzerbild von HeikoAdams
HeikoAdams

Registriert seit: 12. Jul 2004
Ort: Oberfranken
661 Beiträge
 
FreePascal / Lazarus
 
#2

Re: Sinn und Zweck von Any??

  Alt 24. Mär 2009, 13:17
Aus der Online-Hilfe von Access
Zitat:
Überprüft, ob eine oder mehrere Zeilen in der Ergebnisgruppe einer Unterabfrage die angegebene Bedingung erfüllen. (ANY und SOME sind Synonyme; im Abfragedesigner wird zur Bildung einer SQL-Anweisung ANY verwendet.)
Jeder kann ein Held werden und Leben retten!
Einfach beim NKR oder der DKMS als Stammzellenspender registrieren! Also: worauf wartest Du noch?
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.542 Beiträge
 
Delphi 11 Alexandria
 
#3

Re: Sinn und Zweck von Any??

  Alt 24. Mär 2009, 13:22
Außerdem siehe http://msdn.microsoft.com/de-de/library/ms175064.aspx
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
Benutzerbild von Phoenix
Phoenix
(Moderator)

Registriert seit: 25. Jun 2002
Ort: Hausach
7.611 Beiträge
 
#4

Re: Sinn und Zweck von Any??

  Alt 24. Mär 2009, 13:31
Du könntest alternativ, um zum gleichen Ergebnis zu kommen, in der Unterabfrage auch immer das kleinste Gehalt als Vergleichswert selektieren (also SELECT TOP 1 Gehalt from (... where...) ORDER BY gehalt ASC) und direkt mit > vergleichen. Könnte mir sogar vorstellen, das dass performanter ist.
Sebastian Gingter
Phoenix - 不死鳥, Microsoft MVP, Rettungshundeführer
Über mich: Sebastian Gingter @ Thinktecture Mein Blog: https://gingter.org
  Mit Zitat antworten Zitat
JumpFrog

Registriert seit: 15. Mär 2009
26 Beiträge
 
#5

Re: Sinn und Zweck von Any??

  Alt 24. Mär 2009, 13:46
wenn ich mein Beispiel Konkret auf die dazugehörige Datenbank anwende kommt folgendes Raus.

Von den 20 Mitarbeitern wurden 18 herrausgefiltert die 2 die nicht nicht angeziegt werden haben ein Gehalt von 1.850,50€ und 1875,00€ .

Wieso bekomm ich nun von der Abfrage alle anderen auser die 2 Angezeigt?

Mir bringen diese Links nicht wirklich viel... die sagen mir nur das was ich schon weiß.. aber ich will es ja auch verstehen und nicht nur auswendiglernen...

@ Phoenix:

Ja, das könnte ich tun allerdings wird das am Montag in der Klassenarbeit in der Berufsschule nicht gefragt.
  Mit Zitat antworten Zitat
Benutzerbild von Phoenix
Phoenix
(Moderator)

Registriert seit: 25. Jun 2002
Ort: Hausach
7.611 Beiträge
 
#6

Re: Sinn und Zweck von Any??

  Alt 24. Mär 2009, 13:57
Zitat von JumpFrog:
wenn ich mein Beispiel Konkret auf die dazugehörige Datenbank anwende kommt folgendes Raus.

Von den 20 Mitarbeitern wurden 18 herrausgefiltert die 2 die nicht nicht angeziegt werden haben ein Gehalt von 1.850,50€ und 1875,00€ .

Wieso bekomm ich nun von der Abfrage alle anderen auser die 2 Angezeigt?
Weil die Unterabfrage
Zitat:
SELECT Gehalt FROM Mitarb WHERE abtnr'Kon1'
in jeder Zeile ein Gehalt von mindestens 1.875,00 € liefert.

Du fragst ja ab:
SQL-Code:
SELECT Name,Gehalt
FROM Mitarb
WHERE Gehalt > ANY( SELECT Gehalt FROM Mitarb WHERE abtnr'Kon1')
Also in Deutsch:
Liefere mir Namen und Gehalt aller Mitarbeiter deren Gehalt größer ist als irgend eines (ANY) der Gehälter eines Mitarbeiters aus der Abteilung Kon1.

Das bedeutet, sobald in der Unterabfrage ein Gehalt gefunden wurde, das kleiner ist als das der abgefragten Zeile, wird diese ausgegeben. Andersrum: Für die zwei Zeilen (1850 und 1875) wurde eben KEINE Zeile in der Unterabfrage gefunden, die kleiner war. Also haben alle Mitarbeiter aus Kon1 mindestens ein Gehalt von 1.875 €
Sebastian Gingter
Phoenix - 不死鳥, Microsoft MVP, Rettungshundeführer
Über mich: Sebastian Gingter @ Thinktecture Mein Blog: https://gingter.org
  Mit Zitat antworten Zitat
JumpFrog

Registriert seit: 15. Mär 2009
26 Beiträge
 
#7

Re: Sinn und Zweck von Any??

  Alt 24. Mär 2009, 14:32
Nochmal zum mitschreiben.

ES wird also in der Unterabfrage ein Gehalt (sagen wir das von der Person die als erste oben steht) mit dem Gehalt der anderen (die nicht in KON1 sind) verglichen. Kommt anschließend bei Person 2 ein noch kleinerer Betrag vor wird dieser als Untergrenze angesehen.

Kommt das in etwa so hin? Könnte man dafür nicht auch All nehmen?



EDIT: Schon ein wenig verwirrent
  Mit Zitat antworten Zitat
Benutzerbild von Phoenix
Phoenix
(Moderator)

Registriert seit: 25. Jun 2002
Ort: Hausach
7.611 Beiträge
 
#8

Re: Sinn und Zweck von Any??

  Alt 24. Mär 2009, 14:39
Zitat von JumpFrog:
ES wird also in der Unterabfrage ein Gehalt (sagen wir das von der Person die als erste oben steht) mit dem Gehalt der anderen (die nicht in KON1 sind) verglichen. Kommt anschließend bei Person 2 ein noch kleinerer Betrag vor wird dieser als Untergrenze angesehen.

Kommt das in etwa so hin? Könnte man dafür nicht auch All nehmen?
Nein. Wenn Du ALL nimmst, dann würdest Du nur Werte bekommen, die größer als ALLE in der Unterabfrage sind.

Mal ein Beispiel:
Unterabfrage liefert 1875, 1900, 1925.

In der Liste der selektierten kommt nun 1900 zurück.

1900 ist nicht nicht größer als ALL (Unterabfrage), weil in der Unterabfrage ja ein 1925 drin vorkommt, was größer wäre.
1926 wäre der kleinste Wert, der bei ALL passen würde.
1900 ist aber größer als ANY (Unterabfrage), weil 1900 ja größer als irgend ein (any) Element der Unterabfrage (1875) ist.
1876 wäre der kleinste Wert, der bei ANY passen würde.
Sebastian Gingter
Phoenix - 不死鳥, Microsoft MVP, Rettungshundeführer
Über mich: Sebastian Gingter @ Thinktecture Mein Blog: https://gingter.org
  Mit Zitat antworten Zitat
JumpFrog

Registriert seit: 15. Mär 2009
26 Beiträge
 
#9

Re: Sinn und Zweck von Any??

  Alt 24. Mär 2009, 14:53
ahhh das macht Sinn musste es zwar ein paar mal durchlesen aber is logisch..

Nur je mehr ich da jetzt drüber nachdenke desto verwirrter werden ich Da kommt wieder die Frage wieso gerade den kleinsten Wert? Ich begründe das jetzt einfach mit dem >
  Mit Zitat antworten Zitat
Benutzerbild von Phoenix
Phoenix
(Moderator)

Registriert seit: 25. Jun 2002
Ort: Hausach
7.611 Beiträge
 
#10

Re: Sinn und Zweck von Any??

  Alt 24. Mär 2009, 15:07
Zitat von JumpFrog:
Da kommt wieder die Frage wieso gerade den kleinsten Wert? Ich begründe das jetzt einfach mit dem >
Jupp. Naja, fast.

Du kannst bei ANY ja jeden Operator nehmen.

= ANY (Unterabfrage) heisst ja, dass der Wert mit irgend einem in der Unterabfrage (egal welcher) identisch übereinstimmen muss. Das ist natürlich für jeden unterschiedlichen Wert X in der Hauptabfrage ein anderer Wert in der Unterabfrage, sofern dieser überhaupt existiert.

ANY > heisst eben, dass der Wert größer als irgend einer in der Unterabfrage ist.
Und wie prüfst Du am einfachsten, ob viele Werte X (Hauptabfrage) größer als irgend ein Eintrag in einer anderen Liste sind? Du gehst her, und suchst Dir den kleinsten Wert aus der Liste, weil wenn Du da drüber bist, bist Du auf jeden Fall > ANY.

Die Datenbank wird, sofern vorhanden, aller Wahrscheinlichkeit nach einen Index zur Suche und zum Vergleich verwenden. Je nach Größe des Index kann es also schon sehr gut sein, das für den eigentlichen Vergleich ein größerer Wert hergenommen wird. Aber für > ANY gibts halt eine untere Schranke, und die wird zwangsläufig durch den kleinsten Wert bestimmt. Bei < ANY wäre es eben der größte, bei != ANY reicht ja auch irgend ein Wert in der Unterabfrage, der anders als der Vergleichswert ist.

Es kommt eben schon auf den Operator an, welcher Wert ausschlaggebend ist.
Nur ein Vergleich auf einen einzelnen Wert (SELECT TOP1 value FROM ORDER BY value ASC) ist sicher schneller als der Vergleich gegen eine Menge von Werten (ANY).
Sebastian Gingter
Phoenix - 不死鳥, Microsoft MVP, Rettungshundeführer
Über mich: Sebastian Gingter @ Thinktecture Mein Blog: https://gingter.org
  Mit Zitat antworten Zitat
Antwort Antwort


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 22:27 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