Access-o-Mania

Access-Forum (Deutsch/German) => Tabelle/Abfrage => Thema gestartet von: TTB am August 11, 2016, 12:43:29

Titel: Abfragegruppierung über zwei Spalten
Beitrag von: TTB am August 11, 2016, 12:43:29
Hallo Leute,

ja das Newbie-sein hört nicht auf. Ich habe eine Tabelle in der viele Felder zu finden sind. Mir geht es um zweie dieser. Sie beinhalten Fahrzeugtypen eines PKW; nämlich des Erst- und Zweitwagens.

Was ich brauche ist eine Liste (Abfrage) in der die jeweiligen Fahrzeugtypen zu finden sind. Hätte ich nur eine Spalte, wüsste ich wie ich das hinbekommen:

Abfrage -> Gruppierung -> fertig.

Aber wie mache ich aus zwei Spalten eine?

lG
Chris
Titel: Re: Abfragegruppierung über zwei Spalten
Beitrag von: DF6GL am August 11, 2016, 12:49:54
Hallo,

"Newbie-sein" wird sich auch nicht ändern, wenn die Normalisierungsregeln nicht beachtet und umgesetzt werden....


Quick und vor allem dirty:

Select FZTyp1 & "," & FZTyp2 as FZTypen from tbl_DeineTabelle  Group by  FZTyp1 & "," & FZTyp2


Wegen mir auch:

Select Distinct FZTyp1 & "," & FZTyp2 as FZTypen from tbl_DeineTabelle
Titel: Re: Abfragegruppierung über zwei Spalten
Beitrag von: TTB am August 11, 2016, 13:07:17
Danke für Deine Antwort. Funktioniert!

Nun gut. Vielleicht fällt Dir ja eine bessere Lösung ein:

Ich habe eine Exceltabelle bekommen, die wir bisher als Datenbank nutzten. Dieses gute Stück, mindestens 10 Jahre lang von einer Dame geführt, die nun bald in Rente geht enthält diese beiden Spalten. Und in jeder dieser Spalten gibt es unzählige Schreibweisen, für ein und dasselbe. Limusine, Limousine, Limo, Limósine,...manche Felder sind leer und manche enthalten auch das Modell oder die Automarke.
Es handelt sich um fast 3000 Datensätze.
In anderen Feldern habe ich selbst Hand angelegt und eine Ordnung reingebracht, und normalisiert indem ich Extratabellen angelegt habe.

Ich habe für diese Felder keine andere Idee, als das mit der Zeit im Alltag aufzuarbeiten. Wenn die Datensätze eh aufgerufen werden sollen zum Beispiel, soll sich derjenige, der das tut damit auseinandersetzen und es hoffentlichst ändern, so dass die Liste im Kombifeld immer kürzer wird, bis eine Ordnung herrscht, die sich dann im Nachhinein ordnungsgemäß verwursten lässt.

Hast Du mit derartig vermurksten Dingern Erfahrung?
Titel: Re: Abfragegruppierung über zwei Spalten
Beitrag von: Lachtaube am August 11, 2016, 13:31:09
In diesem Fall kann eine Phonetische Suche (https://de.wikipedia.org/wiki/Phonetische_Suche) hilfreich sein. Für die deutsche Sprache gibt es z. Bsp. die Kölner Phonetik (https://de.wikipedia.org/wiki/K%C3%B6lner_Phonetik), welche auch nach VB(A) umgesetzt (http://www.vbarchiv.net/tipps/tipp_1754-koelner-phonetik.html) wurde. Du könntest dann nach dem Ergebnis sortieren bzw. filtern und wenn das Ergebnis stimmt, eine Aktualisierung für den Wert durchführen.

Hier ein paar Beispielaufrufe im VBA Direkt-Bereich:?Koelner_Phonetic("Limusine")
5686
?Koelner_Phonetic("Limousine")
5686
?Koelner_Phonetic("Limósine")
56?86 '==> hier könnte man noch ein Replace(Ergebnis, "?", "") anwenden
?Replace(Koelner_Phonetic("Limósine"), "?", "")
5686
?Koelner_Phonetic("Limo")
56 ' das wäre dann doch zuviel verlangt - erscheint aber in der Sortierung
Titel: Re: Abfragegruppierung über zwei Spalten
Beitrag von: ebs17 am August 11, 2016, 13:37:02
ZitatEs handelt sich um fast 3000 Datensätze.
Man könnte den Handbetrieb um etwas Datenbanktechnik ergänzen.

1) Temporäre Zuordnungstabelle anlegen
SELECT DISTINCT
   FeldX,
   "" AS Ersetzung
INTO
   Zuordnungstabelle
FROM
   DeineTabelle


2) Feld "Ersetzung" mit den Begriffen Deiner Wahl füllen, am einfachsten per Hand + Kopieren, aber auch Ähnlichkeitssuche kann man unterstützend einsetzen.

3) Ersetzungen zurückschreiben
UPDATE
   DeineTabelle AS D
      INNER JOIN Zuordnungstabelle AS Z
      ON D.FeldX = Z.FeldX
SET
   D.FeldX = Z.Ersetzung


Aus zwei Spalten eine machen und Normaliserung umsetzen hast Du ja schon geübt.
Titel: Re: Abfragegruppierung über zwei Spalten
Beitrag von: DF6GL am August 11, 2016, 13:39:18
Hallo,


ZitatHast Du mit derartig vermurksten Dingern Erfahrung?


ja   8)


Du bist ja auf dem richtigen Weg, wenn Du  Stammdaten-  (Nachschlage-) Tabellen mit gesetzten Beziehungen schon einsetzt.  D. H. hier ist eine Tabelle "tbl_FZTypen" nötig mit Primärschlüssel- ( "FzT_ID") und Benennungsfeld("FzT_Benennung") . Über das Benennungsfeld legst Du einen eindeutigen Index (--> ohne Duplikate).

Mit Hilfe einer Anfügeabfrage überträgst Du aus der Excel-Liste zuerst die erste Spalte, danach die zweite Spalte in die "tbl_FZTypen"-Tabelle. Durch den Index wird vermieden, dass  gleiche Benennungen mehrfach in die Tabelle geschrieben werden.

Ändere jetzt das Autowert-Primärschlüsselfeld in ein nicht- eindeutig indiziertes Long-Feld.  Erstelle eine Abfrage auf diese Tabelle und sortiere darin nach der Benennung.   Öffne diese Abfrage; jetzt ist Handarbeit gefordert insofern, als dass alle gleichsinnigen Benennungen den "FzT_ID"-Wert erhalten, der die richtige Schreibweise darstellt.

In weiteren Schritten wird die geänderte FzTypen-Tabelle mit der aus Excel generierten Access-Tabelle ("tbl_Fahrzeuge") in einer Aktualisierungs-Abfrage über die Benennungsfelder verknüpft und der FzT_ID-Wert in das FK-Feld "FZ_FzT_ID".

Zuletzt können mit einer Löschabfrage alle nicht in tbl_Fahrzeuge verwendeten FzTypen aus der tbl_FzTypen gelöscht werden.

Titel: Re: Abfragegruppierung über zwei Spalten
Beitrag von: TTB am August 11, 2016, 13:56:10
Mannmannmann! Herzlichen Dank an alle!

Wenn die Zeit nicht mehr so drückt, werde ich an dieser Stelle weiter machen. Bis dahin bin ich bei der nächsten Baustelle zugange.

lG
Chris