myGully.com Boerse.SH - BOERSE.AM - BOERSE.IO - BOERSE.IM Boerse.BZ .TO Nachfolger
Zurück   myGully.com > Computer & Technik > Programmierung
Seite neu laden

Access 2010 - Abfragen

Willkommen

myGully

Links

Forum

 
Antwort
Themen-Optionen Ansicht
Ungelesen 23.09.12, 09:32   #1
pro-logic
Anfänger
 
Registriert seit: Nov 2009
Beiträge: 39
Bedankt: 8
pro-logic ist noch neu hier! | 0 Respekt Punkte
Standard Access 2010 - Abfragen

Hallo zusammen!


ich wurde von meinem Chef dazu "verdonnert" mich mit Access 2010 auseinander zu setzen und soll jetzt eine kleine PersonalDB erstellen. Die rudimentären Dinge wie Tabellen erstellen und einfache Abfragen bekomme ich als Access-Erstie hin. Die meisten Themen kann man sich auch schön als Video-Tut auf youtube anschauen... allerdings ist nichts dabei, was meine konkrete Frage beantworten kann.

Bsp:
Ich habe eine Tabelle Personal. Jeder Datensatz hat eine ID (Primärschlüssel).

Tabelle: Personal
*MitarbeiterID
Name
Vorname
etc.

Dazu eine zweite Tabelle: Telefonnummern (jeder MA kann n Telefonnummern haben):

*TelefonID
MitarbeiterID
Telefonnummer

Ich möchte jetzt eine Abfrage oder eine Abfrageverschachtelung (?) die mir den Personaldatensatz (1) und die Liste der zugehörigen Telefonnummern (n) zurückliefert.

Wie macht man sowas mit Access 2010?


BTW: Kennt jemand ein gutes Tut, dass auch weitergehende Fragen Beantwortet? Jeden Begriff zu googlen ist sehr mühsam...



Grüße
pL
pro-logic ist offline   Mit Zitat antworten
Ungelesen 23.09.12, 10:05   #2
Thelvan
Erfahrenes Mitglied
 
Registriert seit: Jul 2010
Beiträge: 493
Bedankt: 236
Thelvan erschlägt nachts Börsenmakler | 5269 Respekt PunkteThelvan erschlägt nachts Börsenmakler | 5269 Respekt PunkteThelvan erschlägt nachts Börsenmakler | 5269 Respekt PunkteThelvan erschlägt nachts Börsenmakler | 5269 Respekt PunkteThelvan erschlägt nachts Börsenmakler | 5269 Respekt PunkteThelvan erschlägt nachts Börsenmakler | 5269 Respekt PunkteThelvan erschlägt nachts Börsenmakler | 5269 Respekt PunkteThelvan erschlägt nachts Börsenmakler | 5269 Respekt PunkteThelvan erschlägt nachts Börsenmakler | 5269 Respekt PunkteThelvan erschlägt nachts Börsenmakler | 5269 Respekt PunkteThelvan erschlägt nachts Börsenmakler | 5269 Respekt Punkte
Standard

[ Link nur für registrierte Mitglieder sichtbar. Bitte einloggen oder neu registrieren ]

Stichworte für dich sind INNER JOIN & WHERE
Thelvan ist offline   Mit Zitat antworten
Ungelesen 23.09.12, 10:45   #3
ProgMaster
Banned
 
Registriert seit: Mar 2012
Beiträge: 337
Bedankt: 93
ProgMaster ist noch neu hier! | 0 Respekt Punkte
Standard

Zitat:
Zitat von Thelvan Beitrag anzeigen
[ Link nur für registrierte Mitglieder sichtbar. Bitte einloggen oder neu registrieren ]

Stichworte für dich sind INNER JOIN & WHERE
Wollte mich nicht bedanken, denn INNER JOIN und WHERE Bedingungen sind falsch, da hier eine 0..n Relation vorliegt.

Du solltest Dir LEFT JOIN anschauen.
ProgMaster ist offline   Mit Zitat antworten
Ungelesen 23.09.12, 10:51   #4
pro-logic
Anfänger
 
Registriert seit: Nov 2009
Beiträge: 39
Bedankt: 8
pro-logic ist noch neu hier! | 0 Respekt Punkte
Standard

Danke für den Link!

Das Join-Verfahren gibt als Ergebnis immer n Datensätze zurück, d.h. wenn ein Mitarbeiter 5 Telefonnummern hat, bekomme ich auch 5 komplete Datensätze. Dann ist die Frage wohl eher wie
man das Filtert. Ich möchte gerne ein Formular auf dem der Personaldatensatz mit allen Telefonnummern auf einmal angezeigt wird. In PHP könnte ich mir da helfen, aber in Access!?


Nochmals Danke!



MfG
pL
pro-logic ist offline   Mit Zitat antworten
Ungelesen 23.09.12, 12:57   #5
Thelvan
Erfahrenes Mitglied
 
Registriert seit: Jul 2010
Beiträge: 493
Bedankt: 236
Thelvan erschlägt nachts Börsenmakler | 5269 Respekt PunkteThelvan erschlägt nachts Börsenmakler | 5269 Respekt PunkteThelvan erschlägt nachts Börsenmakler | 5269 Respekt PunkteThelvan erschlägt nachts Börsenmakler | 5269 Respekt PunkteThelvan erschlägt nachts Börsenmakler | 5269 Respekt PunkteThelvan erschlägt nachts Börsenmakler | 5269 Respekt PunkteThelvan erschlägt nachts Börsenmakler | 5269 Respekt PunkteThelvan erschlägt nachts Börsenmakler | 5269 Respekt PunkteThelvan erschlägt nachts Börsenmakler | 5269 Respekt PunkteThelvan erschlägt nachts Börsenmakler | 5269 Respekt PunkteThelvan erschlägt nachts Börsenmakler | 5269 Respekt Punkte
Standard

Zitat:
Zitat von ProgMaster Beitrag anzeigen
Wollte mich nicht bedanken, denn INNER JOIN und WHERE Bedingungen sind falsch, da hier eine 0..n Relation vorliegt.

Du solltest Dir LEFT JOIN anschauen.
Könnt sein, das ich das oben falsch verstehe, aber so wie ich das lese, hat er z.B. eine bestimmte PersonalNr und möchte zu genau dieser PersonalNr alle Telefonnummern haben.
Thelvan ist offline   Mit Zitat antworten
Ungelesen 23.09.12, 16:46   #6
NetWebs
Banned
 
Registriert seit: Aug 2012
Beiträge: 223
Bedankt: 68
NetWebs ist noch neu hier! | 0 Respekt Punkte
Standard

Zitat:
Zitat von Thelvan Beitrag anzeigen
Könnt sein, das ich das oben falsch verstehe, aber so wie ich das lese, hat er z.B. eine bestimmte PersonalNr und möchte zu genau dieser PersonalNr alle Telefonnummern haben.
Was ist der Sinn Deines Beitrages?
Er eine Abfrage, die Ihm den Personaldatensatz und die dazugehörigen Telefonnummern auflisten:

Zitat:
Zitat von pro-logic Beitrag anzeigen
Ich möchte jetzt eine Abfrage oder eine Abfrageverschachtelung (?) die mir den Personaldatensatz (1) und die Liste der zugehörigen Telefonnummern (n) zurückliefert.
Genau das macht man mit einem LEFT JOIN!

@pro-logic:
Bei 5 Telefonnummern bekommst Du natürlich 5 Datensätze ausgegeben!
Genau das wolltest Du:

Zitat:
Zitat von pro-logic Beitrag anzeigen
Ich möchte jetzt eine Abfrage oder eine Abfrageverschachtelung (?) die mir den Personaldatensatz (1) und die Liste der zugehörigen Telefonnummern (n) zurückliefert.
NetWebs ist offline   Mit Zitat antworten
Ungelesen 24.09.12, 10:18   #7
pro-logic
Anfänger
 
Registriert seit: Nov 2009
Beiträge: 39
Bedankt: 8
pro-logic ist noch neu hier! | 0 Respekt Punkte
Standard

Eben das wollte ich nicht... Wenn ich eine Abfrage auf die Personalnummer 1234 mache, benötige ich den Datensatz des Mitarbeiters (das ist nur einer) und die Liste der Telefonnummern (unter umständen 5-6).
Die Ausgabe sieht aber so aus, dass es 5-6 komplette Datensätze gibt, bei denen jeweils alles gleich ist, nur die Telefonnummer anders.

Man könnte wohl zwei Abfragen machen. Erst rufe ich den MA-Datensatz auf, suche dann die entsprechende PersonalID raus und frage mit der PersonalID die Telefonnummern ab. Das Ergebnis wären dann zwei Abfragen mit jeweils einem bzw. 5 Datensätzen...

Im Endeffekt ist mein Ziel ein Formular auf dem man die Daten des MA angezeigt bekommt. Dort gibt es ein Feld in dem alle Telefonnummern stehen.

Das Formularergebnis jetzt ist, ein kompletter Datensatz mit EINER Telefonnummer und wenn man in der Statusleiste über die Datensatznavigation nach rechts und links klickt bekommt man nacheinander 5 mal den gleichen DS aber mit anderer Telefonnummer...

Ich hab wie gesagt noch nie mit Access gearbeitet und konnte noch nicht rausfinden wie man die Daten in dem Fall abfragt oder wenn man halt 5 gleiche Sätze mit verschiedenen Nummern hat diese zu einem Datensatz mit 5 Nummern zusammenzufassen...


MfG pL
pro-logic ist offline   Mit Zitat antworten
Ungelesen 24.09.12, 11:01   #8
pro-logic
Anfänger
 
Registriert seit: Nov 2009
Beiträge: 39
Bedankt: 8
pro-logic ist noch neu hier! | 0 Respekt Punkte
Standard

Hab nochmal ein bisschen weiter gesucht und bin auf folgenden Thread gestoßen:

[ Link nur für registrierte Mitglieder sichtbar. Bitte einloggen oder neu registrieren ]

Dort wird das Grundproblem behandelt und mit einem VBA-Modul gelöst. Die Lösung würde es für mich auch tun, aber kann Access sowas nicht alleine? Un dazu kommt ja noch, dass man die Unterdatensätze damit nur auslesen und nicht bearbeiten kann. Da müsste man analog zum auslesen auch mit VBA arbeiten. Macht einen eher unpraktischen Eindruck.


MfG
pL
pro-logic ist offline   Mit Zitat antworten
Ungelesen 24.09.12, 16:59   #9
ProgMaster
Banned
 
Registriert seit: Mar 2012
Beiträge: 337
Bedankt: 93
ProgMaster ist noch neu hier! | 0 Respekt Punkte
Standard

Wie bereits gesagt löst LEFT JOIN dein Problem, welches du anfangs geschildert hast.

Wenn du nachträglich erst sagst, du hättest aber gern dies und jenes, dann wird man dir nicht helfen können.
Ein bisschen mehr Struktur solltest du schon bieten, wenn du eine Anforderung formulierst!

Also, was willst du nun haben...?
ProgMaster ist offline   Mit Zitat antworten
Ungelesen 24.09.12, 18:25   #10
Thelvan
Erfahrenes Mitglied
 
Registriert seit: Jul 2010
Beiträge: 493
Bedankt: 236
Thelvan erschlägt nachts Börsenmakler | 5269 Respekt PunkteThelvan erschlägt nachts Börsenmakler | 5269 Respekt PunkteThelvan erschlägt nachts Börsenmakler | 5269 Respekt PunkteThelvan erschlägt nachts Börsenmakler | 5269 Respekt PunkteThelvan erschlägt nachts Börsenmakler | 5269 Respekt PunkteThelvan erschlägt nachts Börsenmakler | 5269 Respekt PunkteThelvan erschlägt nachts Börsenmakler | 5269 Respekt PunkteThelvan erschlägt nachts Börsenmakler | 5269 Respekt PunkteThelvan erschlägt nachts Börsenmakler | 5269 Respekt PunkteThelvan erschlägt nachts Börsenmakler | 5269 Respekt PunkteThelvan erschlägt nachts Börsenmakler | 5269 Respekt Punkte
Standard

Wie willst du die denn bitte in einem Datensatz darstellen?

Pro Telefonnummer eine Spalte oder was?

Du könntest ein Formular machen, wo du die Mitarbeiter durchscrollst und dort dann eine ListBox mit den Telefonnummern hast.
Thelvan ist offline   Mit Zitat antworten
Ungelesen 25.09.12, 07:31   #11
pro-logic
Anfänger
 
Registriert seit: Nov 2009
Beiträge: 39
Bedankt: 8
pro-logic ist noch neu hier! | 0 Respekt Punkte
Standard

OK, ich versuche mein Problem mal 1:1 darzustellen wie es mir hier vorliegt. Dachte es wäre einfacher das Problem an sich zu vereinfachen...

Ich habe eine Personaldatenbank mit vielen verschiedenen Tabellen.

Die Haupttabelle beinhaltet die Personaldaten wie Personalnummer, Name, Anschrift, etc.
Dazu gibt es verschiedene weitere Tabellen wie Telefonnummern, Versetzungen (an andere Standorte), arbeitsmedizinische Untersuchungen, Führerscheindaten, etc.

Jede dieser Untertabellen enthält eine Spalte mit der Personalnummer des MA und so können jedem einzelnen Mitarbeiter n Versetzungen, Untersuchungen, Führerscheinverlängerungen, etc. eingetragen werden. Das Problem ist alle Daten auf einem einzigen Formluar zusammenzufassen. Wenn das nur eine Untertabelle wäre könnte man in der Abfrage ein Unterdatenblatt machen und ein entsprechendes Unterformluar anzeigen (macht der Assi automatisch). Wie macht man das mit so vielen 1:n Tabellen?

Ich hab keine Ahnung woher ich für eine zweite Abfrage die Personalnummer nehmen soll um nur die MA-Daten abzufragen... Kann man die Abfrage mit einem Textfeld auf dem Formular verknüpfen - ich habs nicht herausgefunden...

Wird klar was mein Problem ist? Nicht SQL ist mein Problem sondern das handling mit Access!!


MfG
pL
pro-logic ist offline   Mit Zitat antworten
Ungelesen 25.09.12, 12:27   #12
ProgMaster
Banned
 
Registriert seit: Mar 2012
Beiträge: 337
Bedankt: 93
ProgMaster ist noch neu hier! | 0 Respekt Punkte
Standard

Also, zuerst ging es dir doch nur um die Abfrage...also SQL...

Weißt du was ein Unterformular ist? Das kann dein Problem lösen...
ProgMaster ist offline   Mit Zitat antworten
Antwort


Forumregeln
Du kannst keine neue Themen eröffnen
Du kannst keine Antworten verfassen
Du kannst keine Anhänge posten
Du kannst nicht deine Beiträge editieren

BB code is An
Smileys sind An.
[IMG] Code ist An.
HTML-Code ist Aus.

Gehe zu


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


Sitemap

().