SELECT
TOP 10 *
FROM
Bestelldetails
ORDER BY (Einzelpreis*Anzahl)
Nach einer kleinen Testabfrage werden Sie feststellen, dass die Abfrage wie erwartet 10 Datensätze zurück-
gibt. Uns bleibt jetzt noch die Aufgabe, das Tabellenlayout der Abfrage an die Tabelle Auslaufartikel anzu-
passen.
SELECT
ArtikelNr, Artikelname, LieferantenNr, KategorieNr, Liefereinheit,
Einzelpreis, MWSt, Lagerbestand, BestellteEinheiten, Mindestbestand,
Auslaufartikel, NOW AS AusgelaufenAm
FROM
Artikel
WHERE
ArtikelNr IN (SELECT TOP 10 Artikelnr FROM Bestelldetails ORDER BY (Einzelpreis*Anzahl))
Das Ergebnis ist eine Tabelle mit dem gleichen Layout:
Abbildung 8.58 Abfrageergebnis
Doch da findet sich in der SQL-Anweisung eine Funktion NOW(). Der Grund: Den Wert für das Feld Aus-
gelaufenAm kann uns auch gleich die SQL-Engine eintragen.
Im letzten Schritt können wir zum Kopieren der Daten schreiten:
INSERT INTO AuslaufArtikel
SELECT
ArtikelNr, Artikelname, LieferantenNr, KategorieNr, Liefereinheit, Einzelpreis, MWSt, Lagerbestand,
BestellteEinheiten, Mindestbestand, Auslaufartikel, NOW AS AusgelaufenAm
FROM Artikel
WHERE ArtikelNr IN ( SELECT TOP 10 Artikelnr FROM Bestelldetails ORDER BY (Einzelpreis*Anzahl))
Exportieren/Importieren von Abfragedaten
Im Gegensatz zur INSERT INTO-Anweisung können Sie mit SELECT INTO gleich eine komplette neue
Tabelle erzeugen.
SELECT <felder-quelltabelle> INTO <zieltabelle> FROM <quelltabelle >
461
Daten manipulieren
HINWEIS
BEISPIEL
Kapitel 8: SQL in Theorie und Praxis
Die Zieltabelle kann im Fall von JET-SQL auch eine externe Datenbank/Tabelle sein.
Statt vieler Worte dürften wieder einige Beispiele für mehr Klarheit sorgen:
Erstellen einer neuen Tabelle
Nachbestellung
, in die alle Artikel eingetragen werden, von denen weniger als 5
im Lager sind.
SELECT *
INTO
Nachbestellung
FROM
Artikel
WHERE
Lagerbestand < 5
Ein nachfolgender Blick mittels »SELECT * FROM Nachbestellung« zeigt das gewünschte Ergebnis:
Abbildung 8.59 Abfrageergebnis
Anwendungsgebiete für die obigen Funktionen sind der Daten-Import/-Export, das Anlegen von Siche-
rungskopien, das Erstellen von temporären Tabellen etc.
Speichern in externen Tabellen
Verwenden Sie in o.g. Anweisung zusätzlich die Klausel IN, können Sie die Abfrageergebnisse auch in einer
externen Tabelle speichern. Das Datenformat hängt vom verwendeten Aufruf ab.
SELECT * INTO <Tabellenname> IN <Pfad|Datenbank> <Datenbanktyp>
Als Datenbanktyp kommen die folgenden Zeichenfolgen in Frage:
Datenbanktyp Kennzeichen
Access "[Datenbank];"
dBASE III "dBASE III;"
dBASE IV "dBASE IV;"
Tabelle 8.11 Konstanten für die Datenformate
462
HINWEIS
BEISPIEL
BEISPIEL
HINWEIS
Datenbanktyp Kennzeichen
dBASE 5 "dBASE 5.0;"
Paradox 3.x "Paradox 3.x;"
Paradox 4.x "Paradox 4.x;"
Paradox 5.x "Paradox 5.x;"
Paradox 7.x "Paradox 7.x;"
FoxPro 2.0 "FoxPro 2.0;"
FoxPro 2.5 "FoxPro 2.5;"
FoxPro 2.6 "FoxPro 2.6;"
Excel 3.0 "Excel 3.0;"
Excel 4.0 "Excel 4.0;"
Excel 5.0 "Excel 5.0;"
Excel 7.0 "Excel 7.0;"
Excel 95/97/2000/2002 "Excel 8.0;"
HTML-Import "HTML Import;"
HTML-Export "HTML Export;"
Text "Text;"
ODBC "ODBC; DATABASE=Datenbankname; UID=Benutzer; PWD=Kennwort; DSN=Datenquelle;
LOGINTIMEOUT=Sekunden"
Tabelle 8.11 Konstanten für die Datenformate (Fortsetzung)
Achten Sie besonders auf die Schreibweise für das Exportformat! Die Autoren haben mehrere Stunden damit
verbracht, einen entsprechenden Fehler zu beseitigen (das fehlende Semikolon war die Ursache!).
Export der Tabelle
Artikel
im dBASE IV-Format.
SELECT *
INTO Artikel IN 'c:\' 'dBase IV;'
FROM Artikel
Export der Tabelle
Mitarbeiter
aus Paradox in das Microsoft Access-Format.
SELECT * INTO Mitarbeiter
FROM Mitarbeiter IN 'C:\Beispiele' 'Paradox 7.x;'
Zumindest eine leere Datenbank muss in diesem Fall bereits vorhanden sein, die Tabelle wird angelegt. Sollte
die Tabelle schon existieren, tritt ein Laufzeitfehler auf (3010).
463
Daten manipulieren

Get Microsoft Office Access 2007-Programmierung - Das Handbuch now with the O’Reilly learning platform.

O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.