Neuigkeiten:

Wenn ihr euch für eine gute Antwort bedanken möchtet, im entsprechenden Posting einfach den Knopf "sag Danke" drücken!

Mobiles Hauptmenü

Mehrere Datenbanken auf einmal abfragen

Begonnen von Blaupunkt79, August 07, 2024, 19:46:32

⏪ vorheriges - nächstes ⏩

Blaupunkt79

Hallo Zusammen,

ich frage aus einer Umsatzdatenbank Kundendaten aus, funktioniert alles soweit gut.

SELECT *  FROM  umsatz9 As U  where U.Art IN ('A','Z',"") And U.Artikel IN (SELECT Artikel FROM [C:\Users\xxx\Desktop\BLSCC_Datenbanken\artikel.mdb].artikel9 WHERE disponent IN ('103'))

oder

SELECT U.*  FROM  umsatz9 As U  Left Join  (  SELECT  Kunde  FROM  umsatz9  WHERE  Artikel IN (SELECT Artikel FROM [C:\Users\xxx\Desktop\BLSCC_Datenbanken\artikel.mdb].artikel9 WHERE disponent IN ('103'))  ) AS Q ON U.Kunde = Q.Kunde  where U.Art IN ('A','Z',"") And Q.Kunde is Null

Nehmen wir an, ich hätte nun 2 oder 3 verschiedene Umsatzdatenbanken, jeweils für das entsprechende Kalenderjahr. (2022+2023+2024)

Kann ich in meiner obigen Abfrage alle 3 Umsatzdatenbanken miteinander verknüpfen, also das Access nicht nur das Jahr 2024 betrachtet, sondern auch die Jahre 2022+2023+2024? Wie würde das mit meinen obigen Beispielen aussehen?

Danke für Eure Unterstützung.

Grüße

Mirko
  •  

MzKlMu

#1
Hallo,
verbinde mit einer Unionabfrage die gewünschten Tabellen und verwende die Abfrage statt der einzelnen Tabellen. Das wird aber wahrscheinlich kein Renner werden.

PS:
Zitatsondern auch die Jahre 2022+2023+2024?
Dass es ein Strukturfehler ist für jedes Jahr eine Tabelle anzulegen weist Du ?
Gruß
Klaus
  •  

ebs17

#2
Um die Antwort von Klaus zu vertiefen: Welchen besonderen Grund gibt es, mehrere Umsatzdatenbanken parallel nebeneinander zu führen? Das dann noch zuzüglich externer Artikel-DB's, und Tabellenbezeichnungen wie umsatz9/artikel9 wecken zusätzlich schlimme Befürchtungen.
Dass diese Maßnahmen extrem umständlich und von Dir nicht handhabbar sind, hast Du ja schon bemerkt.

Normalisierung: Gleiche Daten gehören in einzelnes Feld EINER Tabelle. Dann stellt sich Deine obige Frage gar nicht.
Eine Tabelle auch deshalb, weil die genannte UNION-Abfrage zwar in die gleiche Richtung führt, aber für folgende Nutzungen eine Indexnutzung unterbindet. Falls die Datentrennung wegen größerer Datenmengen erfolgt, handelst Du Dir dann ein spürbares Performanceproblem ein.
Mit freundlichem Glück Auf!

Eberhard
  •  

Blaupunkt79

Tatsächlich befinde ich mich je nach Filialgröße bei einem Jahr Umsatzdaten bei ca. 2GB Datenbankgröße, deshalb die Idee, die Umsatzdateien zusammenzufassen. Ein anderer Aspekt wäre, auch marktübergreifende Auswertungen zu ziehen. Blöd ist natürlich, dass die Indexnutzung entfällt, dass wusste ich nicht.

In der Umsatz-DB befinden sich lediglich Artikelnummer/Mengen in Absatz & Euro sowie Ertrag/Kundendaten/Aussendienst-ID/Zeitangaben. Habe gerade mal eine Auswertung von März/April 2024 geöffnet, dort sind es alleine schon 537.000 Datensätze je 12 Spalten.

In der Artikel-DB habe ich sämtliche Artikel Daten zusammengefasst, wie z.b. Warengruppe/Lieferant/Mengeneinheiten. Hierbei befinde ich mich bei einer Dateigröße von ca. 400 MB.

Könntest Du mir als Beispiel zeigen, wie eine Union-Abfrage aussehen würde? Ich teste dann mal, wie schnell/langsam das Ganze ist. Aktuell wird selbst 1 Jahr sehr flott bearbeitet.

Danke

Mirko

  •  

ebs17

#4
Ein Accessfile kann nur bis 2GB verwalten. Wenn das auf eine Tabelle zutrifft, so trifft das in gleicher Weise auch auf eine Abfrage zu. Ein gleichzeitiges Zusammenbringen ist also auch sehr schnell zum Scheitern verurteilt. Vielleicht wäre denkbar, die Ergebnisse von Einzelabfragen in einer Tabelle (eines weiteren Accessfiles) einzeln anzufügen, unter dem Vorbehalt, dass die Einzelabfragen eine erhebliche Datenreduzierung per Filterung enthalten.

Ergiebiger ist es aber, wenn Du ein DBMS als Backend verwendest, das von Haus aus viel höhere Datenmengen zulässt.
Die Frage im gleichen Zusammenhang wäre auch, wo solche Datenmengen herkommen. Wenn wahrscheinlich aus einer "richtigen" Datenbank - warum wird die nicht konsequent weitergenutzt?

Nur zur Komplettierung: SQL UNION ALL
Mit freundlichem Glück Auf!

Eberhard
  •  

Blaupunkt79

Eine "echte" Datenbank gibt es zweifelsohne, nur ist das ein privates Projekt von mir, auf die "Hauptdatenbank" erhalte ich kein Zugriff.

Das mit den Einzelabfragen finde ich sehr interessant, ich denke eher nicht, dass die Ergebnisse über 2GB kommen, von daher sehr zielführend. Werde mich die Tage mal rantasten.

Danke für die Tipps!

Mirko
  •