Access-o-Mania

Access-Forum (Deutsch/German) => Tabelle/Abfrage => Thema gestartet von: Lernwilliger am August 23, 2011, 19:38:56

Titel: In einer Abfrage doppelt Einträge nicht zur Anzeige kommen zu lassen
Beitrag von: Lernwilliger am August 23, 2011, 19:38:56
Hallo, einen schönen Gruß aus dem Sonnigen Monem,
Ich habe eine Abfrage erstellt bei der mir alle Mitglieder die einen bestimten Kurs noch nicht gebucht haben anzeigt.
Da aber die Mitglieder durchaus mehrer ander Kurse belegt haben werden mir diese auch untereinander, also mehrmals angezeigt. Da ich die Auswahl
für die Nutzung von Berichten und Serienbriefen benutzen möchte würden die doppelten Angaben zum Mitglied (Name,Adresse ec.) ausgegeben. Bei der Übergabe bzw. Nutzung
Serienbrief würden so unnötige Doppelte Briefe für den gleichen Empfänger ausgedruckt.
Die im der Hilfe angegebene SQL Anweisung SELECT DISTINCT Nachname FROM Kunden brachte keinen Erfolg. Mein Kommentar dazu habe ich wie folgt eingetragen:
Geht bei mir nicht. Nutze Access 2010 Es wird ein Fehler im Bezug auf FROM angezeigt.
Möglicherweise mache ich Grundsächlich einen Fehler? Ich möchte die doppelten Einträge (in meinem Fall Feld Nachname) nicht Löschen sondern in der Abfrage nur nicht Angezeigt bekommen um damit Daten für jeden in einem Bericht zu nutzen und nicht mehrmals.

Ich komme nicht weiter, die Fuktion der Serienbrieferstellung um Kunden auf einen neuen Kurs anzusprechen würde ich gern einbauen.  Vielen Dank nochmals für die bisherige Hilfe, viele Dinge die mir vorher leicht von der Hand gingen habe ich nach meinem längeren Komaaufenthalt schlichtweg vergessen. Aber ich will mich nicht beklagen, sondern freue mich über jeden noch kommenden Tag, ein Lernwilliger
Titel: Re: In einer Abfrage doppelt Einträge nicht zur Anzeige kommen zu lassen
Beitrag von: DF6GL am August 23, 2011, 20:34:27
Hallo,

gruppiere die Abfrage nach den Feldern die gleiche Einträge haben und lass alle anderen Felder außen vor.
Titel: Re: In einer Abfrage doppelt Einträge nicht zur Anzeige kommen zu lassen
Beitrag von: Lernwilliger am August 24, 2011, 09:13:56
Hallo Franz,

vielen Dank für deine schnelle Hilfe. Aber jetzt kommts, Wie mach ich daß ?
Ich finde nichts passendes in meinen Unterlagen.
Gib mir bitte ein Beispiel für eine entsprechende Abfrage die meine Duplikate aussortiert.

Gruß aus Mannheim Edgar
Titel: Re: In einer Abfrage doppelt Einträge nicht zur Anzeige kommen zu lassen
Beitrag von: Jonny am August 24, 2011, 09:22:20
Hallo Edgar,
nimm eine Abfrage und füge ganz normal die Felder ein.
Danach klickst du das Summensymbol an.
Jetzt werden alle Feld guppiert. Es erscheint eine neue Zeile Funktion und bei den Feldern steht Gruppierung.
Alle Felder mit gleichen Inhalt werden zu einer Gruppe zusammengefasst. Achtung geht nicht mit eindeutige Schlüsselfeld

Gruß

Johann
Titel: Re: In einer Abfrage doppelt Einträge nicht zur Anzeige kommen zu lassen
Beitrag von: Lernwilliger am August 24, 2011, 11:25:40
Hallo Johann,
das Feld Gruppieren durch klicken des Summensymbols kenne ich schon und bringt mich für meinen Fall nicht weiter.
Mein gewünschtes Ergebniss wäre das mir Jeweils nur einmal zB. der Kunde Muster Mann amgezeigt wird und eben nicht der Muster Mann jeweils mit einer anderen Kursbelegung in einer
nachfolgenden Zeile.
zB. Muster Mann  Kurs Turnen
      Muster Mann  Kurs Gymnastik
      Muster Mann  Kurs Rücken
was in der Serienbriefbearbeitung zu drei Briefen an den gleichen Kunden führen würde.
Angezeigt werden soll nur einmal der Kunde Muster Mann, die anderen Liseneinträge sollen da Sie doppelt sind (für meine Zwecke) nicht angezeigt werden, jeder Kunde der zB den Kurs Ernährung noch nicht
belegt hatt soll angezeigt weren aber eben nur einmal ( zwecks bearbeitung, auch in einem Formular, dort würde der gleiche Kunde aus der Abfrage heraus auch mehrmals mit einem Datensatz angezeigt werden.

Gruß Edgar
Titel: Re: In einer Abfrage doppelt Einträge nicht zur Anzeige kommen zu lassen
Beitrag von: Jonny am August 24, 2011, 12:10:34
Hallo Edgar,
da kommst du natürlich nicht mit eine Abfrage und Gruppierung hin. Auch deshalb nicht weil du dann
im Form die Daten nicht bearbeiten kannst.

Hier scheint mir aber ein Fehler in der Struktur vorzuliegen.

Hast du nur eine Tabelle mit den Kunden und deren Kurse oder ist das aufgeteilt?

Um helfen zu können brauchen wir doch ein paar Info´s über die Tabellen und deren Beziehung

Gruß

Johann
Titel: Re: In einer Abfrage doppelt Einträge nicht zur Anzeige kommen zu lassen
Beitrag von: DF6GL am August 24, 2011, 14:22:13
Hallo,


alle Kunden mit jeweils gleichen Vor- und Nachnamen werden nur einmal angezeigt. :


Select Vorname, Nachname from Kunden group by Nachname, Vorname



Wie Jonny schon angemerkt hat, scheint ein Tabellendesign-Fehler vorzuliegen, wenn Deine Schilderung authentisch ist.
Titel: Re: In einer Abfrage doppelt Einträge nicht zur Anzeige kommen zu lassen
Beitrag von: ebs17 am August 24, 2011, 14:35:38
ZitatMein gewünschtes Ergebniss wäre das mir Jeweils nur einmal zB. der Kunde Muster Mann amgezeigt wird und eben nicht der Muster Mann jeweils mit einer anderen Kursbelegung in einer
nachfolgenden Zeile.
Du musst die Kursbezeichnung im SELECT-Teil der Abfrage weglassen, dann klappt es auch mit dem DISTINCT.
Die Frage Duplikat bezieht sich immer auf alle Felder in Kombination  im SELECT-Teil, nicht nur auf bestimmte, die Du im Auge hast. Daher lässt man Überflüssiges einfach weg.

MfGA
ebs
Titel: Re: In einer Abfrage doppelt Einträge nicht zur Anzeige kommen zu lassen
Beitrag von: Lernwilliger am August 24, 2011, 18:44:28
Hallo, vielen Dank für die Hilfe,
ich füge den Eintrag aus der Abfrage in der SQL Anzeige ein, warscheinlich sin dort meine Fehler zu finden, schauts euch bitte mal an.

SELECT Kunden.Nachname, Kunden.Vorname, Kunden.PLZ, Kunden.Ort, Kunden.Straße, KundenKurs.Art, KundenKurs.Anbieter, KundenKurs.Nr, KundenKurs.Status, KundenKurs.ZW, KundenKurs.Beitrag, KundenKurs.Beginn, KundenKurs.Ablauf
FROM Kunden INNER JOIN KundenKurs ON Kunden.[ID_Kunde_P] = KundenKurs.[ID_Kunde_P]
GROUP BY Kunden.Nachname, Kunden.Vorname, Kunden.PLZ, Kunden.Ort, Kunden.Straße, KundenKurs.Art, KundenKurs.Anbieter, KundenKurs.Nr, KundenKurs.Status, KundenKurs.ZW, KundenKurs.Beitrag, KundenKurs.Beginn, KundenKurs.Ablauf
HAVING (((KundenKurs.Art)<>2))
ORDER BY Kunden.Nachname;

Habe die Empfehlungen natürlich schon ausprobiert, vermutlich an den falschen Stellen.
Titel: Re: In einer Abfrage doppelt Einträge nicht zur Anzeige kommen zu lassen
Beitrag von: database am August 24, 2011, 19:14:55
Hallo,

ZitatHabe die Empfehlungen natürlich schon ausprobiert, vermutlich an den falschen Stellen.
...mit Sicherheit ...   ;)

Es gab die Empfehlung alle Felder weg zu lassen, die du nicht benötigst.
Nach deinen Angaben sollten also Vorname und Nachname sowie Adressdaten der Kunden genügen.
Konkret - alle Vornamen und Nachnamen und Adressen von Kunden, die den Kurs '2' nicht belegt haben.

Damit hätten dann die folgenden Felder in deiner Abfrage nix verloren:

KundenKurs.Anbieter, KundenKurs.Nr, KundenKurs.Status, KundenKurs.ZW, KundenKurs.Beitrag, KundenKurs.Beginn, KundenKurs.Ablauf

...und da liegt dann auch der Hund WAHRSCHEINLICH begraben - du bekommst sooft einen Kunden angezeigt als er unterschiedliche Einträge in einem der obigen Felder hat.
KundenKurs.Nr, KundenKurs.Beitrag, KundenKurs.Beginn, KundenKurs.Ablauf  ...  sind solche Kandidaten!

Daher versuche bitte mal so:


SELECT DISTINCT Kunden.Nachname, Kunden.Vorname, Kunden.PLZ, Kunden.Ort, Kunden.Straße
FROM Kunden INNER JOIN KundenKurs ON Kunden.[ID_Kunde_P] = KundenKurs.[ID_Kunde_P]
GROUP BY Kunden.Nachname, Kunden.Vorname, Kunden.PLZ, Kunden.Ort, Kunden.Straße, KundenKurs.Art
HAVING KundenKurs.Art<>2
ORDER BY Kunden.Nachname;


Sollte die Kundennamen nur einmalig liefern, wenn die Adressen unique sind.
Wenn ein Kunde 2-malig angelegt wurde, weil er 2 verschiedene Adressen hat, wird er trotzdem 2x angezeigt.

HTH
Titel: Re: In einer Abfrage doppelt Einträge nicht zur Anzeige kommen zu lassen
Beitrag von: ebs17 am August 24, 2011, 22:23:43
Oder so:
SELECT Kunden.Nachname, Kunden.Vorname, Kunden.PLZ, Kunden.Ort, Kunden.Straße
FROM Kunden
WHERE EXISTS
(SELECT Null FROM KundenKurs
WHERE Kunden.ID_Kunde_P = KundenKurs.ID_Kunde_P
AND (KundenKurs.Art > 2 OR KundenKurs.Art < 2))


MfGA
ebs
Titel: Re: In einer Abfrage doppelt Einträge nicht zur Anzeige kommen zu lassen
Beitrag von: Lernwilliger am August 25, 2011, 10:34:19
Vielen Dank , jetzt erhalte ich eine Liste ohne doppelte Auflistung der geleichen Mitglieder (Kunden). Diese kann ich jetzt für meine Serienbrieffunktion nutzen.
Das gibt meine nächste Baustelle, wie übergebe ich die Datenfelder in das von mir vorbereitete Word-Document, ich werde mal nachsehen.

Nochmals vielen Dank für die Hilfe, SUPER.