Re: verschachtelte SQL?

From: Michael Bayer (spamentsorgung_at_gmx.net)
Date: 02/04/04


Date: Wed, 04 Feb 2004 13:55:33 +0100

Hallo Torsten,

[...]
Bei wirklich umfangreichen Abfragen lasse ich meistens Access für mich
arbeiten ;-) Ich erstelle eine Abfrage, in der alle benötigten Tabellen
vorkommen (in Deinem Fall also die Tabellen, die Deinen drei Abfragen
zugrunde liegen), verknüpfe sie und lasse mir dann den SQL-Befehl ausgeben.

Wenn Du eine Abfrage ausführen willst, die auf den Ergebnissen einer
anderen Abfrage basiert, erzeugst Du z.B. verschachtelte SELECT-Anweisung.

Beispiel: Du willst die Daten der Kunden haben, die im Jahr 2003 Umsatz
generiert haben. Die Kundendaten befinden sich in der Tabelle "Kunden",
die Umsatzdaten in der Tabelle Statistik. Das Feld, das in beiden
Tabellen vorkommt, ist die Kundennummer (KDNR):

SELECT KDNR, KundeVorname, KundeNachname, KundeStraße, Kundeusw. FROM
Kunden WHERE KDNR IN (SELECT KDNR FROM Statistik WHERE Umsatzjahr =
2003) ORDER BY KundeNachname

Oder Du verwendest hierarchische Recordsets. Das heißt, ein Datensatz
Deines Recordset enthält einige/alle Datenfelder der Mastertabelle (z.B.
Kunden) und als letztes Feld wieder ein Recordset, welches alle/einige
Daten der Detailtabelle (z.B. Aufträge dieser Kunden) enthält. Beispiel,
wenn die beiden Tabellen wieder über das Feld KDNR verknüpft sind:

SHAPE {Select KDNR, Name, Straße, PLZ, Ort. FROM Kunden}
    APPEND ({Select AuftragsNr, AuftragsDatum, Liefertag, Bestelldatum
FROM Aufträge} AS rsAufträge
            RELATE KDNR TO KDNR)
                                
Ergebnis-Recordset:

Kunden.KDNR
Kunden.Name
Kunden.Straße
Kunden.PLZ
Kunden.Ort
rsAufträge
   AuftragsNr
   AuftragsDatum
   Liefertag
   Bestelldatum

> oder kann man zunächst ein Recordset für abf1 erstellen und dann über dies
> eine Abfrage machen?

Nein. Ein Recordset kannst Du nur mit den Move-, Find- oder
Filter-Methoden durchlaufen bzw. durchsuchen, aber keine weitere Abfrage
darauf aufbauen.

Viele Grüße
Michael



Relevant Pages

  • Re: Alter der letzten Qnderung?=
    ... ich nehme mal an das es zu den Kunden auch irgendwelche Daten gibt, ... Erstelle eine Abfrage mit den beiden Tabellen: ... Kunden Bestellungen => diese richtig Verknüpft ...
    (microsoft.public.de.access)
  • Re: Geschwindigkeit Access Abfrage
    ... Was ist nun der bessere weg bzw. für die normale Suche ... In Access eine Abfrage erstellen, ... Ohne einen Index auf den Suchspalten macht das keinen Unterschied. ... System für alle Tabellen die auf die Tabelle verweisen ...
    (microsoft.public.de.german.entwickler.dotnet.datenbank)
  • [OT]Re: SummeWennS + Datentyp Datum pruefen auf groesser kleiner gleich
    ... Kategorien / etc.) einmal erstellt, ist der Rest mit Abfragen gut zu meistern. ... Und hast du einmal eine Abfrage erstellt (z.B. ... In meiner Firma wird mit Tabellen hantiert, das kann ich kaum mit ansehen. ... Bist du auf dem Weg, ...
    (microsoft.public.de.excel)
  • =?iso-8859-1?Q?Re:_Pivot:_Viele_W=F6rter_z=E4hlen?=
    ... Er muss nämlich eine Menge Daten auswerten. ... Dort wird dann der SQL-String erstellt, der die eigentliche Abfrage ... Weil "Tabellen" per default gecheckt war, dachte ich, es hat schon alles seine Richtigkeit. ... Wenn ich daraus eine PT bekomme, die alles in einer Spalte auswertet und mir korrekt die Anzahl der X und A sagt, ist es korrekt. ...
    (microsoft.public.de.excel)
  • Auswahlabfrage ohne Schreibzugriff auf externe Tabellen m.referent
    ... unter- bzw. nachgeordneten Tabelle DependentTable11 habe ich einen Feld ... Auf beide Tabellen ... miteinander in Beziehung stehenden externen Tabellen aufsetzt. ... beider Tabellen in der Abfrage wird 1:1 und ebenfalls mit der Primärtabelle ...
    (microsoft.public.de.access)