Neuigkeiten:

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

Mobiles Hauptmenü

Eine komplexe Ähnlichkeitsgrupierung in Access SQL ohne VBA möglich?

Begonnen von Kloso, November 07, 2016, 16:23:47

⏪ vorheriges - nächstes ⏩

ebs17

ZitatWenn Kloso bei Umsetzung meiner Idee x ausreichend groß wählt, wird das schon eine Weile funktionieren.
Wenn die Abfrage nicht vorhandene Felder der unangetasteten Tabelle verwendet, wird sie gleich in einen Fehler laufen.

Ist das jetzt Logik oder Unsachlichkeit?
Mit freundlichem Glück Auf!

Eberhard

crystal

@ebs17
Weder noch. Es ist einfach nur nicht richtig überlegt.

ha s1 s2 s3 s4 s5 s6 s7 s8 s9 (Feldnamen der Excel-Tabelle)
---------------------------------
aa a1 a2 a3 a4 a5
bb b1 b2 b3 b4
cc c1
dd d1 d2 d3

Läuft hier die Abfrage
...
union select ha, s6 as sy ... where s6 <> ""
union select ha, s7 as sy ... where s7 <> ""
...
in einen Fehler?

Ich bitte dich einfach nur, dich sachlich mit meiner Idee zu beschäftigen und eine simple Frage zu beantworten: wäre sowas grundsätzlich möglich (ohne Rücksicht auf Performance und "Tabus")?

Ich finde meine Idee nämlich grundsätzlich ganz cool - und sie kommt ohne VBA aus (vgl. Thread-Thema). Auch würde mich interessieren, was DF6GL, Josef P., Beaker s.a. und andere davon halten...

lg
crystal
Wer Fehler in meinen Antworten findet, darf sie behalten, muss sie aber kommentieren. ;-)
Dies ist keineswegs arrogant gemeint, sondern soll nur unterstreichen, dass meine Antworten - natürlich - nicht immer fehlerfrei sind und sein können.
Devise: bitte immer erst selbst probieren!

Aus gesundheitlichen Gründen nur noch selten dabei...

Beaker s.a.

Hallo crystal,
Na, wenn du mich so direkt fragst, kann ich Eberhard nur zustimmen.
Sch... auf "ohne VBA", wenn's flexibler ist und nicht weiter angepasst
zu werden braucht, wenn Daten dazu kommen, dann in Gottes Namen
"warum nicht?".
Und wenn Eberhard sagt "mach' dies besser mit VBA", dann kannst du
ihm schon glauben, dass alles andere nur suboptimal ist, - bestenfalls.
gruss ekkehard

P.S. (OT):
Eberhards
ZitatBeispiele aus der "realen Welt"
sind eigentlich immer sehr passend. Obwohl beim letzten habe ich auch
eine Minute länger gebraucht  ;)
Alles, was geschieht, geschieht. - Alles, was während seines Geschehens etwas anderes geschehen lässt, lässt etwas anderes geschehen. - Alles, was sich selbst im Zuge seines Geschehens erneut geschehen lässt, geschieht erneut. - Allerdings tut es das nicht unbedingt in chronologischer Reihenfolge.
(Douglas Adams, Mostly Harmless)

ebs17

Zitatwäre sowas grundsätzlich möglich
Wenn Du unterstellen kannst, dass es in der Exceltabelle für nicht vorhandene Inhalte bereits Spaltenüberschriften gibt: Ja.
Die unangetastete Exceltabelle nimmst Du da aber selber nicht ernst, und die Erstellerin wird wohl kaum von folgenden Sorgen ahnen und da Spaltenüberschriften vortragen für eine Weile.

Zitatohne Rücksicht auf Performance
Nun, es gibt Abfragen, die funktionieren. Kommen aber ein paar Daten mehr dazu, dauert das Funktionieren so lange, dass der User an einen Absturz glaubt. Welcher Nutzer wünscht sich das?
Datenbanklösungen zu bauen, die  mengenuntauglich/unperformant sind, ist diskutabel. Das bewusst zu tun, obwohl man mit vergleichbarem Aufwand anderes machen könnte, ist zumindest Verschwendung von Zeit des Nutzers und am Ende auch des Entwicklers, der in die Pflicht des Optimierens genommen wird. Man wird sich wünschen, dass der Verursacher-Entwickler in die Pflicht genommen wird und nicht andere hinterher aufräumen müssen.
Zum Querlesen: Es war einmal eine kleine Exceltabelle ...

Hat sich denn schon jemand für die vorhandenen / potentiellen Datenmengen in der Suchmaschine interessiert? Die Notwendigkeit dafür nimmt ab, wenn man sich gleich am möglichen Optimum für mögliche Performance orientiert.

ZitatIch finde meine Idee nämlich grundsätzlich ganz cool
Das darfst Du. Zur Auswahl zwischen Varianten müssen einem erst mal Varianten einfallen. Sowie dann auch: Das üblich Beste kann sich auch als schlecht erweisen, wenn spezielle Bedingungen eintreten. Man ist also mit anhaltender Restkritik zu allem sowie dem Wissen um Varianten gut beraten.

Du darfst aber davon ausgehen, dass hier die meisten Teilnehmer Vorschläge gemäß Best practice ihrer Möglichkeiten und Erfahrungen geben. Der geplagte Fragesteller wird das auch irgendwie erwarten.

Wenn man eine ungünstige Datenstruktur (die Exceltabelle) vorfindet, kann man die Umformungen laufend und immer wieder während jeder der Suchabfragen machen, oder man macht die Umformung einmalig und konsequent (mit Zugabe Indexunterstützung), z.B. bei Beginn der Sitzung zu den Suchabfragen. Die Exceltabelle wird kaum eine Aktualisierungsfrequenz von Sekunden haben.
Es ist bekannt, dass die ellenlange und nach eigener Einschätzung mit Performanceproblemen behaftete UNION-Abfrage mit jeder Suche neu ausgeführt wird?
Zeit und Aufwand schätzen und bewerten, das darf jeder für sich. Meine Wahl ist nachlesbar.

Man sollte zusätzlich auch nicht aus den Augen verlieren, woher die Wunsch auf Verzicht auf VBA stammt:
Zitat von: KlosoHabe schon nach allen möglichen ,,ähnlichkeitssuchen" gesucht, aber alles basiert nicht auf eine Spalte und ist mega komplex mit .DLLs, VBA und Modulen.
Das ist auf die Suche gemünzt, zumindest in meiner Wahrnehmung.
Wenn aber Kloso irgendein Access-Frontend in Verwendung hat, gibt es da automatisch jede Menge Ereignisse (Form_Open), die man zu einer kleinen Prozedur zur Aufbereitung der Exceltabelle nutzen kann. Da ist der Schritt der Datenumformung bereits nachhaltig erledigt, ehe der Suchvorgang beginnt. Die Lebensdauer der umgeformten Exceltabellenkopie kann man dann selber festlegen, hier dann sicher entsprechend der Dauer der Sitzung zur Synonymsuche, maximal Zeit des geöffneten Frontends.
Der Suchvorgang selber ist dann astreines SQL, nachdem der Nutzer seine Suchparameter hinzugefügt hat.
So würde ich es für mich machen, und daher kann ich es auch anderen nahelegen.

//OT - Beispiele aus der "realen Welt":
Ich war mal im Verkauf tätig, bei ganz normalen Menschen.
Axel J. Bertling sagte: Es beschwert sich niemand, wenn man sofort versteht. Damit man verstanden wird, rede mit jedem wie mit einem vierzehnjährigen Mädchen. Na, auch da gibt es Ausnahmen.
Mit freundlichem Glück Auf!

Eberhard

crystal

Danke für deinen Kommentar, Ekkehard.
Um es nochmal klarzustellen:
Ich habe eine Idee gepostet, die m.E. funktionieren würde.
Die Zahl der Synonyma in der Excel-Datei ist ja irgendwie endlich und wird nicht plötzlich explodieren. Das hat ja auch Kloso mit seiner eigenen Lösung (mit viel zu komplizierten Selects) schon angedeutet, indem er "x" eingeführt hat.
Meine pragmatische Idee zeigt doch nur:
1. es wäre möglich, x Attribute per Union so umzugestalten, dass sie per where...in abgerufen werden können
2. meine Idee kommt ohne VBA aus
3. freilich hat meine Idee den Nachteil, dass "x" irgendwann vielleicht zu klein ist
4. wie oft wird 3. vorkommen?
5. prinzipiell ist meine Idee doch cool, einmal abgesehen von 3.

Im übrigen glaube ich solchen Sätzen

ZitatUnd wenn Eberhard sagt "mach' dies besser mit VBA", dann kannst du
ihm schon glauben, dass alles andere nur suboptimal ist, - bestenfalls.
prinzipiell nicht, denn niemand besitzt die absolute Wahrheit und es ist immer besser, Meinungen und Aussagen zu hinterfragen, als sie unreflektiert zu akzeptieren. Wenn sich tausend Fische in engem Schwarm bewegen, wird am Ende nur der dem Netz entgehen, der etwas abseits geschwommen ist (um auch mal ein blumiges Beispiel zu bringen).

Während ich dies schreibe, hat ebs17 eine neue Antwort eingestellt und ich bin positiv überrascht: hier lese ich zum ersten Mal Argumente, die sogar ich (!) nachvollziehen kann (einmal abgesehen von einigen Details und dem Nachsatz).

Ich kann es nur wiederholen: dies ist ein Diskussions-Forum und so sollten Ideen auch einfach nur diskutiert werden, um letztlich den Fragesteller sowie Mitleser etwas weiter zu bringen UND zu zeigen, dass es mehrere Wege zur Lösung seines Problems geben kann.
Niemand hat die Wahrheit gepachtet und niemand ist unfehlbar. Meine Einwürfe und Ideen sollen daran erinnern und die nicht seltene - ich nenne es einmal so - Arroganz hinter mancher Antwort aufzeigen.

OK, Mods, damit habe ich wieder teilweise OT geschrieben. Es steht euch frei, mich dafür "mundtod" zu machen.

Ansonsten lg
crystal

Wer Fehler in meinen Antworten findet, darf sie behalten, muss sie aber kommentieren. ;-)
Dies ist keineswegs arrogant gemeint, sondern soll nur unterstreichen, dass meine Antworten - natürlich - nicht immer fehlerfrei sind und sein können.
Devise: bitte immer erst selbst probieren!

Aus gesundheitlichen Gründen nur noch selten dabei...