MS-Office-Forum
Google
   

Zurück   MS-Office-Forum > Microsoft Access & Datenbanken > Microsoft Access
Registrieren Forum Hilfe Alle Foren als gelesen markieren

Banner und Co.

Antworten
Ads Der Renner, 11 Entwicklertools für Access, Tipps & Trick und offene Datenbanken zum einzigartigen Preis.
Themen-Optionen Ansicht
Alt 12.10.2011, 12:55   #31
Atrus2711
MOF Guru
MOF Guru
Standard

Wenn die nichtgruppierten Felder pro Gruppe immer gleich sind, dann kann er auch gefahrlos danach gruppieren... er würde dann merken, wenn es doch mal "Abweichler" gäbe. Aber einfach von den Willi Müllers aus den (ggf. mehreren) Telefonnummern die kleinste und aus den Geburtsdaten das kleinste zu nehmen, ist keine Vereinzelung, sondern Glücksspiel.
Atrus2711 ist offline  
verlinken auf Del.icio.us Diese Seite zu Mister Wong hinzufügen
Antworten Auf Beitrag antworten
Alt 12.10.2011, 17:57   #32
zra8886
MOF Koryphäe
MOF Koryphäe
Standard

Hallo zusammen,

habe mir bei der Nachhausefahrt im Zug noch mal Gedanken gemacht.

Ich würde die Daten nun auf folgende Weise reduzieren:

Normale Abfrage:
Code:

SELECT Max(tbl_tmp_Import.[row id]) AS ID, tbl_tmp_Import.[last name], tbl_tmp_Import.[first name], tbl_tmp_Import.[date of birth]
FROM tbl_tmp_Import
GROUP BY tbl_tmp_Import.[last name], tbl_tmp_Import.[first name], tbl_tmp_Import.[date of birth];
Max habe ich deshalb gewählt, weil ich davon ausgegangen bin, dass der neueste Datensatz die höchste row id erhalten hat.
Mit der Gruppierung nach Nachname, Vorname und Geburtsdatum ist schon eine über 90%ige Eindeutigkeit gegeben. Mit dieser Abfrage kann ich dann weiterarbeiten. Über eine Verknüpfung ID zu row id ist der Zugriff auf den kompletten Datensatz jederzeit möglich.

Man kann natürlich auch je nach Bedarf anstatt Max: First, Last oder Min verwenden.

Im Prinzip also das gleiche Ergebnis wie bei Maike
mfg
Roland

__________________

Lesenswerter Link
Ist aus dem Beitrag die Version nicht ersichtlich nehme ich meine an: Office 2010
zra8886 ist offline  
verlinken auf Del.icio.us Diese Seite zu Mister Wong hinzufügen
Antworten Auf Beitrag antworten
Alt 12.10.2011, 23:28   #33
maikek
MOF Guru
MOF Guru
Standard

Zitat:

Im Prinzip also das gleiche Ergebnis wie bei Maike

Nein. Wenn ich folgendes Szenario habe:
Code:

1 Müller Anette 01.01.2011 Berlin
2 Müller Anette 01.01.2011 Frankfurt
bekomme ich mit mit
Code:

Max(ID), Nachname, Vorname, IrgendwasDatum, First(Ort)
das Ergebnis
Code:

2 Müller Anette 01.01.2011 Berlin
Mit der Unterabfrage bekomme ich den kompletten Datensatz mit ID 2, also die Anette aus Frankfurt.
maike

__________________

Bitte dein Thema auf erledigt setzen, wenn's durch ist!
MOF Access Stammtisch in Bremen
maikek ist offline  
verlinken auf Del.icio.us Diese Seite zu Mister Wong hinzufügen
Antworten Auf Beitrag antworten
Alt 13.10.2011, 08:03   #34
zra8886
MOF Koryphäe
MOF Koryphäe
Standard

Zitat: von maikek Beitrag anzeigen

...

Code:

1 Müller Anette 01.01.2011 Berlin
2 Müller Anette 01.01.2011 Frankfurt
....
maike

Hallo Maike,

heute geht es aber wieder einmal auf 15 Nachkommastellen genau. Macht ja nix. Genau das brauchen wir.

Dein Einwand ist berechtigt. Aber ich habe ja geschrieben:

Zitat: von zra8886 Beitrag anzeigen

....Max habe ich deshalb gewählt, weil ich davon ausgegangen bin, dass der neueste Datensatz die höchste row id erhalten hat....
Man kann natürlich auch je nach Bedarf anstatt Max: First, Last oder Min verwenden....

Aus meiner Sicht:

zu weit über 90 % gibt es nur eine Anette Müller die am 01.01.2011 geboren ist.
In ganz, ganz selten Fällen kann es aber vorkommen, dass es zwei Anette Müller gibt, die am 01.01.2011 geboren sind.
Diese sind allerspätenstens mit dem Geburtsort zu unterscheiden, da es mehr als unwahrscheinlich ist, dass am gleichen Ort am gleichen Tag von zwei verschiedenen Müttern mit dem gleichen Nachnamen ein Kind geboren wird, das auch noch den gleichen Vornamen hat.

In dem von dir genannten Beispiel ist nun, aus meiner ganz persönlichen Erfahrung heraus nun zu klären, in welchem Ort Anette Müller, geb. am 01.01.2011 nun lebt.
Ergo:

Zitat: von zra8886 Beitrag anzeigen

........
Man kann natürlich auch je nach Bedarf anstatt Max: First, Last oder Min verwenden....

Und wenn das nicht funkktionieren sollte, dann muss man, in dem Fall ich, sich was neues "ausdenken/herbeizaubern" was zu richtigen Ergebnis führt.

Und den
Code:

First(Ort)
verwende ich so nicht.
Ich nehme dann:

Zitat:

SELECT abfr_VorZunameGebdat.ID, abfr_VorZunameGebdat.[last name], abfr_VorZunameGebdat.[first name], abfr_VorZunameGebdat.[date of birth], tbl_tmp_Import.[first address street], tbl_tmp_Import.[first address post code], tbl_tmp_Import.[first address city]
FROM abfr_VorZunameGebdat INNER JOIN tbl_tmp_Import ON abfr_VorZunameGebdat.ID = tbl_tmp_Import.[row id];

Und somit wohnt Anette Müller, geb. am 01.01.2011 wieder in Frankfurt; also genau da, wo Sie gemäß ID/Row Id auch hingehört.

mfg
Roland

__________________

Lesenswerter Link
Ist aus dem Beitrag die Version nicht ersichtlich nehme ich meine an: Office 2010
zra8886 ist offline  
verlinken auf Del.icio.us Diese Seite zu Mister Wong hinzufügen
Antworten Auf Beitrag antworten
Alt 13.10.2011, 16:08   #35
muku
Threadstarter Threadstarter
Neuer Benutzer
Neuer Benutzer
Standard

Zu nächst einmal super und vielen vielen Danke für die Mühe die ihr euch macht.
Ich habe mich nochmal einige Stunden hingesetz und probiert und hin und her.
Ich brauche für die Dublikatssuche einfach mehr Felder die abgeglichen werden müssen und diese auch EINDEUTIG zu identifizieren. Zu man sie sich auch in Namen, vornamen, geb. , stadt, plz, identische sein können ABER wenn die Straße sich unterscheidet darf dieser nicht als dublette behandelt werden.
Ich hab das im Moment nun folgendermaßen umgesetzt:

Eine Abfrage um mir die Dubletten anzuzeigen (mit MIN):
Code:

SELECT tbl_tmp_Import.[first name], tbl_tmp_Import.[last name], tbl_tmp_Import.[date of birth], tbl_tmp_Import.[first address street], tbl_tmp_Import.[first address city], tbl_tmp_Import.[first address post code], Min(tbl_tmp_Import.[row id]) AS rowID
FROM tbl_tmp_Import
GROUP BY tbl_tmp_Import.[first name], tbl_tmp_Import.[last name], tbl_tmp_Import.[date of birth], tbl_tmp_Import.[first address street], tbl_tmp_Import.[first address city], tbl_tmp_Import.[first address post code]
ORDER BY Min(tbl_tmp_Import.[row id]);
Nun da ich alle Dubletten habe, fehlen mir noch die Spalten hintendran für spätere Auswertungen etc.
Hier hab ich einfach wieder eine Abfrage erstellt. Hier habe ich dann die Abfrage (s.o) und die Tabelle mit den Daten anzeigen lassen. Nun habe ich beide ID´s, die beide gleich sind, verknüpft.
Dann habe ich die Felder die ich zur Dubletten suche benötigt habe von der Abfrage genommen und mir anzeigen lassen + die Spalten die ich noch benötige aus der Tabelle.

Code:

SELECT qry_nicht_zu_loeschende_anzeigen.rowID, tbl_tmp_Import.[transaction link], tbl_tmp_Import.[transaction id], tbl_tmp_Import.[request reason], qry_nicht_zu_loeschende_anzeigen.[first name], qry_nicht_zu_loeschende_anzeigen.[last name], tbl_tmp_Import.[date of birth], tbl_tmp_Import.gender, tbl_tmp_Import.[email address], tbl_tmp_Import.telephone, tbl_tmp_Import.mobile, tbl_tmp_Import.[first address street], tbl_tmp_Import.[first address house number], qry_nicht_zu_loeschende_anzeigen.[first address city], qry_nicht_zu_loeschende_anzeigen.[first address post code], tbl_tmp_Import.[first address country code], tbl_tmp_Import.[first address district], tbl_tmp_Import.[first address building], tbl_tmp_Import.[second address street], tbl_tmp_Import.[second address house number], tbl_tmp_Import.[second address city], tbl_tmp_Import.[second address post code], tbl_tmp_Import.[second address country code], tbl_tmp_Import.[second address district], tbl_tmp_Import.[second address building], tbl_tmp_Import.[order ammount gross], tbl_tmp_Import.[order currency code], tbl_tmp_Import.[is billing and shipping addr identical], tbl_tmp_Import.[order items type], tbl_tmp_Import.[credit decission], tbl_tmp_Import.[payment method], tbl_tmp_Import.[payment behavior], tbl_tmp_Import.[service provider name1], tbl_tmp_Import.[credit service feature types1], tbl_tmp_Import.[master scale value ca attributes1], tbl_tmp_Import.[master scale traffic light ca attributes1], tbl_tmp_Import.[master scale value ca score1], tbl_tmp_Import.[master scale traffic light ca score1], tbl_tmp_Import.[service provider name2], tbl_tmp_Import.[credit service feature types2], tbl_tmp_Import.[master scale value ca attributes2], tbl_tmp_Import.[master scale traffic light ca attributes2], tbl_tmp_Import.[master scale value ca score2], tbl_tmp_Import.[master scale traffic light ca score2], tbl_tmp_Import.[service provider name3], tbl_tmp_Import.[credit service feature types3], tbl_tmp_Import.[master scale value ca attributes3], tbl_tmp_Import.[master scale traffic light ca attributes3], tbl_tmp_Import.[master scale value ca score3], tbl_tmp_Import.[master scale traffic light ca score3], tbl_tmp_Import.[service provider name4], tbl_tmp_Import.[credit service feature types4], tbl_tmp_Import.[master scale value ca attributes4], tbl_tmp_Import.[master scale traffic light ca attributes4], tbl_tmp_Import.[master scale value ca score4], tbl_tmp_Import.[master scale traffic light ca score4] INTO tbl_Import
FROM qry_nicht_zu_loeschende_anzeigen INNER JOIN tbl_tmp_Import ON qry_nicht_zu_loeschende_anzeigen.rowID = tbl_tmp_Import.[row id];
Und zum Schluss habe ich die neu erlernte Tabellenerstellungsabfrage daraus gemacht.

Und voila eine neue Tabelle ohne Dubletten und allen Spalten die ich benötige. Hoffe das was ich da "gebaut" habe nicht bedenklich ist, zumal ich das gleiche Ergebnis mit der Excel-Dublikatssuche erzielt habe.
Achja: Um mir die Dubletten anzuzeigen müsste ich dann wohl die Inkonsistenzsuche verwerden? Also "alte" Tabelle mit Dubletten und "neue" Tabelle ohne Dubletten vergleichen?

Allerdings habe ich noch eine Frage. Ich habe schon gegoogled aber nichts brauchbares gefunden. Gibt es eine Möglichkeit das Geburtsdatum von dem UTC time format in das "normale" Datum (29.06.1999) zu formatieren? und gibt es irgendwelche probleme wenn man dann das "normale" Datum mit zur Dubletten suche verwerdet?

Vieeeele Grüße
muku

Geändert von muku (13.10.2011 um 16:11 Uhr).
muku ist offline  
verlinken auf Del.icio.us Diese Seite zu Mister Wong hinzufügen
Antworten Auf Beitrag antworten
Alt 13.10.2011, 16:15   #36
Atrus2711
MOF Guru
MOF Guru
Standard

Hi,

die qry_nicht_zu_loeschende_anzeigen erinnert mich doch sehr an die Überlebendentabelle/-abfrage, die in dem Link in #2 schon vorkam...

Zitat:

Gibt es eine Möglichkeit das Geburtsdatum von dem UTC time format in das "normale" Datum (29.06.1999) zu formatieren?

Du könntest DateSerial(Jahr, Monat, Tag) verwenden; die Einzelteile kannst du per Mid() aus dem anderen Format isolieren.

UTC ist afaik aber kein Format, sondern eine Zeitskala: http://de.wikipedia.org/wiki/UTC
Atrus2711 ist offline  
verlinken auf Del.icio.us Diese Seite zu Mister Wong hinzufügen
Antworten Auf Beitrag antworten
Alt 13.10.2011, 17:39   #37
muku
Threadstarter Threadstarter
Neuer Benutzer
Neuer Benutzer
Standard

Hallo Atrus2711,
danke für deine Antwort. Ja so ähnlich gemacht wie in #2.
Stimmt das denn mit der Inkonsistenzabfrage in meinem vorherien Beitrag?

Ich habe mich mal dran gemacht die umformatierung für das Geburtsdatum zu erstellen.

Ich bekomme leider noch ein Syntaxfehler. Access moniert das erste Komma.
Wisst ihr was da wieder nicht stimmt? Darf ich das Feld [date of birth) nicht so verwenden?
Vielen Dank im voraus.

Code:

exp1: DateSerial(Mid([date of birth], 1, 4), Mid([date of birth], 5, 2), Mid([date of birth], 7, 2))
muku ist offline  
verlinken auf Del.icio.us Diese Seite zu Mister Wong hinzufügen
Antworten Auf Beitrag antworten
Alt 13.10.2011, 17:47   #38
maikek
MOF Guru
MOF Guru
Standard

Im Abfrageentwurf will das Programm dort Semikolons.
maike

__________________

Bitte dein Thema auf erledigt setzen, wenn's durch ist!
MOF Access Stammtisch in Bremen

Geändert von maikek (13.10.2011 um 17:51 Uhr).
maikek ist offline  
verlinken auf Del.icio.us Diese Seite zu Mister Wong hinzufügen
Antworten Auf Beitrag antworten
Alt 19.10.2011, 11:51   #39
muku
Threadstarter Threadstarter
Neuer Benutzer
Neuer Benutzer
Standard

Danke maikek,
da hast du natürlich recht. Hatte es schon mit semikolons versucht gehabt, hatte wohl eins vergessen.

Leider klappts immer noch nicht. Ich habs jetzt noch ne weile probiert aber mir fällt nix mehr ein. Vielleicht wisst ihr noch was?

Das Datum sieht so aus: Fri May 02 00:00:00 UTC 1986

und meine Frmatierung folgendermaßen:
esp1: DatSeriell(Teil([date of birth];24,4);Teil([date of birth];4,3);Teil([date of birth];8,2))

Ich bekomme leider nur #Fehler angezeigt.
Ich habe mal probiert nur das Jahr zu "filtern" und Monat und Tag statisch eingegeben.
z.B. so: esp1: DatSeriell(Teil([date of birth];24,4);8;16)
Dies funktionierte!
Allerdings funktionierte es nicht mit Tag oder Monat und den Rest statisch.

Viele Grüße
muku
muku ist offline  
verlinken auf Del.icio.us Diese Seite zu Mister Wong hinzufügen
Antworten Auf Beitrag antworten
Alt 19.10.2011, 12:49   #40
Atrus2711
MOF Guru
MOF Guru
Standard

Hi,

das Jahr kommt da nur mit 198 an, da ab der 25. Stelle das Jahr beginnt. Ebenso der Tag. Du schneidest zu früh ab. Schau dir mal die Einzelteile an.

Zitat:

Das Datum sieht so aus: Fri May 02 00:00:00 UTC 1986

Sind Tageskürzel und Monatskürzel immer genau dreistellig? Wie heißen z.B. Mittwoch und Oktober dort?
Atrus2711 ist offline  
verlinken auf Del.icio.us Diese Seite zu Mister Wong hinzufügen
Antworten Auf Beitrag antworten
Alt 19.10.2011, 13:10   #41
muku
Threadstarter Threadstarter
Neuer Benutzer
Neuer Benutzer
Standard

oh da hast du wohl recht. Lustigerweise klappt das mit dem Jahr trotzdem. Also kommt da 1986 raus.
Aber auch mit den "neuen" Änderungen immernoch ... Fehler. :/
Wie ist das eigentlich mit den Monaten. Kann ich die irgendwie entsprechend formatieren. Also statt May --> 05 , Jan --> 01 , Feb --> 02
muku ist offline  
verlinken auf Del.icio.us Diese Seite zu Mister Wong hinzufügen
Antworten Auf Beitrag antworten
Alt 19.10.2011, 13:53   #42
ebs17
MOF Guru
MOF Guru
Standard

Im Direktbereich:
Code:

?CDate("02 Mai 1986 06:00:00")
=> 02.05.1986 06:00:00
Aufgaben dazu:
- String umformatieren (bei konstanten Längen per Mid-Statements, universell per RegEx)
- Das deutsche Access kann mit den englischen Monatskürzeln nichts anfangen. Man müsste diese durch die deutschen ersetzen, bzw. man verwendet bei der Ersetzung gleich die Monatstzahlen.

__________________

Ein freundliches Glück Auf!

Eberhard

Abfrageperformance ist kein Geheimnis
SQL ist leicht: {0}:{1}:{2}:{3}:{4}:{5}:{6}:{7}:{8}:{9}:{10}
Dein Dankeschön: DBWiki=>Spende
ebs17 ist offline  
verlinken auf Del.icio.us Diese Seite zu Mister Wong hinzufügen
Antworten Auf Beitrag antworten
Ads
Antworten


Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Besucher: 1)
 
Themen-Optionen
Ansicht

Forumregeln
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge anzufügen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.

vB Code ist An.
Smileys sind An.
[IMG] Code ist An.
HTML-Code ist An.
Gehe zu


Alle Zeitangaben in WEZ +1. Es ist jetzt 18:40 Uhr.


Partner und Co.
Access-Paradies -Alles rund um die Datenbank Microsoft Access -Code -Programme-Tools -Tipps   Kostenlose Tipps & Tricks, Downloads und Programme   www.kulpa-online.com - Tipps - Tricks - Tutorials - Meinungen - Downloads uvm...   vb@rchiv · Willkommen in der Welt der VB Programmierung   Access-Garhammer - Hier finden Sie jede Menge Beispiel-Datenbanken zu Access und mehr ...   mcseboard.de   Die Top Seite für Excel-VBA-Makros uvm.

Powered by: vBulletin Version 3.6.2 (Deutsch)
Copyright ©2000 - 2017, Jelsoft Enterprises Ltd.

Copyright ©2000-2010 MS-Office-Forum. Alle Rechte vorbehalten.
Copyright ©Design: Manuela Kulpa ©Rechte: Günther Kramer
Eine Verwendung der Inhalte in anderen Publikationen, auch auszugsweise,
ist ohne ausdrückliche Zustimmung der Autoren nicht gestattet.
Beachten Sie bitte auch unsere Nutzungsbedingungen.