Dezember 05, 2021, 07:06:11

Neuigkeiten:

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


Abfrage erstellen 10 aus 20

Begonnen von rantan, September 23, 2021, 18:02:12

⏪ vorheriges - nächstes ⏩

rantan

Hallo,
ich habe ein kleines Problem mit dem Erstellen einer Abfrage zu meiner Datenbank.
Bisher habe ich alles in Excel gemacht, aber jetzt wurde der Datenumfang einfach zu groß mit rd 3 Millionen Datensätzen.

Die Datenbank besteht aus 3 Millionen Zeilen und jede Zeile besteht aus 10 Zahlenfeldern.
Ich möchte jetzt eine Abfrage erstellen welche aus 20 Zahlen besteht und mir sollen dann als Ergebnis nur die Datenzeilen angezeigt werden wo 10 Übereinstimmungen vorliegen.

Wie gesagt in Excel kein Problem, aber dort muss ich die Datenmenge auf 3 Tabellen verteilen (mit je rd. 1 Mio Zeilen) und die "Abfrage" dort braucht dann halt ein klein wenig viel Zeit.

"Doktore" schon seit geraumer Zeit rum komme aber leider zu keiner Lösung da Access für mich absolutes Neuland ist.

Wäre für jede Hilfe dankbar.

Gruss
Marion

MzKlMu

September 23, 2021, 19:16:58 #1 Letzte Bearbeitung: September 23, 2021, 19:22:44 von MzKlMu
Hallo,
wieso 20 Zahlen, wenn Du nur 10 Zahlenfelder hast?
Was sind das für 10 Zahlen, was bedeuten diese ?

Vermutlich ist der Tabellenaufbau für Access schon ungeeignet. Du hast einfach die Exceltabelle nach Access kopiert, aber das geht im Regelfall nicht.
Die zehn Zahlen gehören als je ein Datensatz in eine extra Tabelle mit einem Fremdschlüssel zur jetzigen Tabelle. Dann hast Du zwar 30 Mio DS in der extra Tabelle, aber die Datenmenge insgesamt hat sich nicht vergrößert.
Wenn Du Dir mal die 10 Zahlenfelder aus der jetzigen Tabelle wegdenkst, gibt es da gleiche Zeilen ?
Gruß
Klaus

rantan

Hallo,
ja, ich habe die 3 Tabellen aus Excel importiert und anschließend in Access in einer Tabelle zusammengeführt bzw. angehängt.

Datenblattansicht (10 Datenwerte pro Zeile) habe ich mal angehängt.

Jetzt möchte ich mit einer Abfrage in welche 20 Zahlen eingebe die Zeile finden die 10 Übereinstimmungen enthält mit meinen Zahlen aus der Abfrage.

Anscheinend habe ich jede Menge falsch gemacht. Hmm

Danke.Sie dürfen in diesem Board keine Dateianhänge sehen.

MzKlMu

Hallo,
die Frage, warum 20 Zahlen hast, hast Du nicht beantwortet.
Nimmst Du willkürlich 20 Zahlen um diese zu vergleichen ?
Geht die ID in Zeile 1 von 1 bis 30.000.000 ?
Welche Bedeutung haben die 10 Zahlen ?

Was ist denn der Hintergrund des Vorhabens.
Bitte mal genauer erklären.

Die Access Tabelle sollte eher so aussehen (siehe Bild).Sie dürfen in diesem Board keine Dateianhänge sehen.
Gruß
Klaus

rantan

September 24, 2021, 12:12:20 #4 Letzte Bearbeitung: September 24, 2021, 13:01:15 von rantan
Hallo,
also die 10 Zahlen je Zeile (davon gibt es genau 3.000.010 Zeilen), die als Basis stehen, sind zufällig erzeugt worden.

Die 20 Zahlen werden ebenfalls zufällig erzeugt (dazu gibt es keine Tabelle oder Datenbank) d.h. sie sollen händisch eingegeben werden und dann soll die Abfrage gestartet werden mit dem Ziel: in welcher der 3.000.010 Zeilen "tauchen" 10 Zahlen aus den 20 Zahlen auf (sind meist nur 1 bis max. 3 Zeilen) pro Auswertung.

Die ID startet bei 1 und endet bei 3.000.010.

Gruss
Marion

ebs17

Eine sinnvolle Abfrage könnte so aussehen:
SELECT
   ID,
   COUNT(*) AS Anzahl
FROM
   TabelleX
WHERE
   Zahl IN (2, 3, 4, 5, 9, 11, ...)
GROUP BY
   ID
HAVING
   COUNT(*) > 9
Sie benötigt die von Klaus gezeigte Struktur der Tabelle, weil eine DB zeilenorientiert arbeitet im Unterschied zu Excel, wo man gern Spalten vervielfältigt.
Außerdem sollten beide verwendeten Felder indiziert sein, weil das eine erhebliche Auswirkung auf die Performance hat.

Zitatalso ...
... mit Deiner Tabellenstruktur gibt es keine akzeptable Verarbeitung in der DB, da bliebest Du besser in Excel.

Tipp: Power Query in Excel bietet eine komfortable Unpivot-Funktion an, um in eine db-brauchbare Tabelle umzuformen.
Mit freundlichem Glück Auf!

Eberhard