collapse

* Benutzer Info

 
 
Willkommen Gast. Bitte einloggen oder registrieren. Haben Sie Ihre Aktivierungs E-Mail übersehen?

* Wer ist Online

  • Punkt Gäste: 37
  • Punkt Versteckte: 0
  • Punkt Mitglieder: 1
  • Punkt Benutzer Online:

* Forenstatistik

  • stats Mitglieder insgesamt: 14033
  • stats Beiträge insgesamt: 67186
  • stats Themen insgesamt: 9062
  • stats Kategorien insgesamt: 5
  • stats Boards insgesamt: 17
  • stats Am meisten online: 415

Autor Thema: Abfrage ist zu komplex !  (Gelesen 5553 mal)

Offline 69bruno

  • Heimwerker
  • Access-Profi
  • **
  • Beiträge: 262
Abfrage ist zu komplex !
« am: Januar 23, 2013, 16:40:04 »
 :o
Neeeeeee, ich geh am Krückstock.......
Ich hatte da mal ne DB, da waren 167 Domänenaggregatfunktionen drin.

Dann gab es ein paar Schwierigkeiten und ich habe mich überzeugen lassen, von den Funktionen abzugehen.

Jetzt muss ich, 150 Berichtsfelder füllen (/um 17 reduziert), die meine Daten nur aus unterschiedlichsten Blickwinkeln betrachten und gruppieren. (Alter/Geschlecht/Laufbahn)........

Nach 29 Feldern sagt mir Ac, die Abfrage wäre zu komplex.........Juchu........

Mein Ansatz war, zu jedem Feld eine Abfrage zu erstellen, die lediglich ein Ergebnisfeld hat. Über diese vielen kleinen Abfragen wollte ich mit einer "Berichtsabfrage" drüberbügeln und alle Einzelergebnisse einsammeln.

Und nu bin ich mit dem Latein am Ende.........
« Letzte Änderung: Januar 23, 2013, 16:42:50 von 69bruno »
If Brain <= requestoutofPost then
  PostonForum "Ich verstehe Dein Problem nicht....."
Else
  PostonForum "Denk erst mal über die Normalisierung nach......"
End If
 

Online DF6GL

  • Global Moderator
  • Access-Oberguru
  • *****
  • Beiträge: 23411
Re: Abfrage ist zu komplex !
« Antwort #1 am: Januar 23, 2013, 16:54:31 »
Hallo,

hä??  167 Domänenaggregatfunktionen  ??? ???       :o


Zitat
150 Berichtsfelder füllen... die meine Daten nur aus unterschiedlichsten Blickwinkeln betrachten und gruppieren. (Alter/Geschlecht/Laufbahn)........
   


??? 


Zitat
Mein Ansatz war, zu jedem Feld eine Abfrage zu erstellen, die lediglich ein Ergebnisfeld hat. Über diese vielen kleinen Abfragen wollte ich mit einer "Berichtsabfrage" drüberbügeln und alle Einzelergebnisse einsammeln


Erstell doch eine einzige Abfrage, die alle benötigten Tabellen   über die Schlüsselfelder verknüpft und zieh alle erforderlichen Felder in die Abfragespalten (Alternativ einfach das jeweilige Sternchen aus den Tabellen) .

Voraussetzung wie immer, ist ein passend normalisieres Daten/Tabellen-Modell.

Im Bericht gruppierst/sortierst Du so, wie es benötigt wird. Wenn ein einzelner Bericht immer nach  unterschiedlichen, bzw. verschiedenen Feldern gruppieren/sortieren soll, dann kann die Gruppierungsstruktur auch via VBA über die Gruppierungsmethoden/Eigenschaften variabel gestaltet werden.


Ansonsten ist Dein "Ansatz" suboptimal, um nicht Quatsch sagen zu müssen.   ;)

Offline 69bruno

  • Heimwerker
  • Access-Profi
  • **
  • Beiträge: 262
Re: Abfrage ist zu komplex !
« Antwort #2 am: Januar 23, 2013, 17:07:17 »
 ::)
Ok, Quatsch......

Sagen wir mal, ich arbeite daran, einen DB-Entwurf zu machen, den ich auch hier hochladen kann, damit man nicht immer so komplex erklären muss.
Aber bis dahin, der Bericht ist eher eine Statistik, als ein Bericht. Die 150 Wertfelder der statistischen (tabellarischen) Darstellung befinden sich alle brav auf einer Seite. Und mir will nicht klar werden, wenn ich alle Felder in eine Abfrage ziehe, wie ich ein und dieselbe Spalte nach unterschiedlichen Kriterien auswerten kann. Also z.B.

Die Spalte Geburtsdatum nehme ich, um nach Alter zu gruppieren. Ich will wissen, wieviele jünger als 36 sind, wieviele zwischen36 und 45 sind, wieviele zwischen 46 und 55 sind und wieviele älter als 55 sind. Ich arbeite dabei mit Datediff.

Das geht doch nicht in einer Abfrage, oder ? Bin ich blind ?
If Brain <= requestoutofPost then
  PostonForum "Ich verstehe Dein Problem nicht....."
Else
  PostonForum "Denk erst mal über die Normalisierung nach......"
End If
 

Offline oma

  • Moderator
  • Access Guru
  • *****
  • Beiträge: 4020
Re: Abfrage ist zu komplex !
« Antwort #3 am: Januar 23, 2013, 18:27:27 »
Hallo Bruno,

Zitat
Ich will wissen, wieviele jünger als 36 sind, wieviele zwischen36 und 45 sind, wieviele zwischen 46 und 55 sind und wieviele älter als 55 sind

wenn die Altersgruppen für die Statistik Standard sind, kannst du zu jeder Person ein Zahlenfeld mit einer Gruppenzahl anlegen( zb. AG=1 für unter 36 Jahre usw.) u. damit leicht eine gruppierte Abfrage ausführen.

Gruß Oma
nichts ist fertig!
 

Offline ebs17

  • Access-Meister
  • ***
  • Beiträge: 911
Re: Abfrage ist zu komplex !
« Antwort #4 am: Januar 23, 2013, 18:33:26 »
Zitat
Und mir will nicht klar werden, wenn ich alle Felder in eine Abfrage ziehe, wie ich ein und dieselbe Spalte nach unterschiedlichen Kriterien auswerten kann.
Bei 150 + x Auswertungen wird man wohl nicht alles mit einer Abfrage lösen können. Man kann aber einige wenige Abfragen erstellen, diese Abfragen als Datenherkunft für Unterberichte verwenden und diese Unterberichte im Bericht platzieren.
Die Abfrage nach den Altersgruppen könnte z.B. so aussehen:
SELECT
    (
        SELECT
            Count(Geburtstag) AS Tmp
        FROM
            tblPerson
        WHERE
            Geburtstag > DateAdd('yyyy', - 36, Date())
    ) AS Unter36,
    (
        SELECT
            Count(Geburtstag) AS Tmp
        FROM
            tblPerson
        WHERE
            Geburtstag > DateAdd('yyyy', - 46, Date())
                AND
            Geburtstag <= DateAdd('yyyy', - 36, Date())
    ) AS Ab36Unter46,
    (
        SELECT
            Count(Geburtstag) AS Tmp
        FROM
            tblPerson
        WHERE
            Geburtstag > DateAdd('yyyy', - 55, Date())
                AND
            Geburtstag <= DateAdd('yyyy', - 46, Date())
    ) AS Ab46Unter55,
    (
        SELECT
            Count(Geburtstag) AS Tmp
        FROM
            tblPerson
        WHERE
            Geburtstag <= DateAdd('yyyy', - 55, Date())
    ) AS Ab55
FROM
    tblTabelleMitGenauEinemDatensatz


Wieviele DLookups/DCounts spart das ein?

MfGA
ebs
Mit freundlichem Glück Auf!

Eberhard
 

Offline 69bruno

  • Heimwerker
  • Access-Profi
  • **
  • Beiträge: 262
Re: Abfrage ist zu komplex !
« Antwort #5 am: Januar 23, 2013, 18:51:19 »
Omg.....
Da ist ja schon eine Idee, die mir gefällt.   8)

In Formularen arbeite ich schon ewig mit Ufos....... Das geht ja auch in berichten.......  :-X

Man bin ich blöde.......

Das mit der Gruppenzahl ist mir irgendwie unhandlich. Wie soll ich die jedes mal dynamisch anpassen? Da gibt mir datediff als Bedingung in einer Abfrage doch schon
 eher die gültigen Werte, da das vergleichsdatum das berichtsdatum ist.....
« Letzte Änderung: Januar 23, 2013, 18:56:12 von 69bruno »
If Brain <= requestoutofPost then
  PostonForum "Ich verstehe Dein Problem nicht....."
Else
  PostonForum "Denk erst mal über die Normalisierung nach......"
End If
 

Offline MzKlMu

  • Moderator
  • Access-Oberguru
  • *****
  • Beiträge: 7371
Re: Abfrage ist zu komplex !
« Antwort #6 am: Januar 23, 2013, 18:59:16 »
Hallo,
ich bin ja ein Freund von Hilfstabellen. Daher mal ein Vorschlag mit einer Solchen.
Eine Tabelle von 1-100 und eine Spalte für die Gruppen.
In einer Abfrage bestimmt man das Alter und stellt mit einer weiteren Abfrage eine Beziehung zwischen dem Alter und dem Alter der Hilfstabelle her. In der Abfrage hat man jetzt Gruppen. Mit einer Tabelle für Gruppentexte kann man auch eine Gruppenbezeichnung ausgeben.
Wenn man die Hilfstabelle um eine (oder mehr) Spalten erweitert kann man verschiedene Gruppen einrichten. Und das auch noch mit unterschiedlichen Gruppenbezeichnungen.
Einfache DB mal anbei.

Die Hilfstabelle (eventuell mit unterschiedlichen Gruppeneinteilungen) kann man ganz einfach in Excel erstellen und importieren. Mit der automatischen Reihenfunktion von Excel geht das ratz fatz.

Würde gerne auch andere Meinungen dazu hören.

[Anhang gelöscht durch Administrator]
« Letzte Änderung: Januar 23, 2013, 19:15:18 von MzKlMu »
Gruß
Klaus
 

Offline 69bruno

  • Heimwerker
  • Access-Profi
  • **
  • Beiträge: 262
Re: Abfrage ist zu komplex !
« Antwort #7 am: Januar 24, 2013, 08:27:38 »
Jaaaa,
das ist ja mal ein schönes Beispiel, womit ich mein Problem beschreiben kann.
Zitat
ich bin ja ein Freund von Hilfstabellen. Daher mal ein Vorschlag mit einer Solchen.
Eine Tabelle von 1-100 und eine Spalte für die Gruppen.
Wenn ich Deine Abfrage ausführe, bekomme ich ein vierzeiliges Ergebnis. Ich wüßte nicht, wie ich jetzt das Ergebnis aus Zeile 2 in ein Berichtsfeld bekommen würde. Um auch keine Domänenaggregatfunktionen zu verwenden, mache ich also 4 Auswertungen, wo die jeweilige Gruppe als Bedingung drin steht.
Und damit wäre ich bei meinem Ansatz, für jedes Wertfeld eine Abfrage, die nur ein Ergebnis enthält........ :-[
If Brain <= requestoutofPost then
  PostonForum "Ich verstehe Dein Problem nicht....."
Else
  PostonForum "Denk erst mal über die Normalisierung nach......"
End If
 

Offline MzKlMu

  • Moderator
  • Access-Oberguru
  • *****
  • Beiträge: 7371
Re: Abfrage ist zu komplex !
« Antwort #8 am: Januar 24, 2013, 08:46:32 »
Hallo,
und warum die Zeile 2 ?
Oder kann das auch die Zeile 3 oder 4 sein?
Und warum willst Du überhaupt nur eine Gruppe sehen?

Du kannst die Abfrage in einem Unterbericht darstellen den Du auf den gewünschten Datensatz beschränkst. Die Gruppenbezeichnungen haben ja einen Primärschlüssel, nach diesem kannst Du den UB einschränken.
Gruß
Klaus
 

Offline 69bruno

  • Heimwerker
  • Access-Profi
  • **
  • Beiträge: 262
Re: Abfrage ist zu komplex !
« Antwort #9 am: Januar 24, 2013, 09:20:47 »

Naja, es kann natürlich auch 3 und 4 sein. Letztlich brauche ich alle, einzel betrachtet. Die Frage "Warum" stellt sich nicht, da die Statistik von höherer Stelle vorgegeben ist. Änderungen ausgeschlossen.

Aber innerhalb der Altersgruppen muss ich dann ja auch noch Unterscheidungen treffen.
So im Sinne von
Die Gruppe unter 36-Jähriger sind insgesamt x1 Beschäftigte. Davon hatten x2 Beschäftigte 1-3 Tage Bereitschaft, x3 Beschäftigte 4-31 Tage Bereitschaft und x4 Beschäftigte mehr als 31 Tage Bereitschaft. Allerdings muss die Summe der Bereitschaftstage jeder Bereitschaftslängengruppe (1-3/4-31/31+) ebenfalls dargestellt werden. Und zwar nur die echten Arbeitstage (ohne WE und Feiertage und Teilzeitfreitage)
Das ganze wird dann noch einmal für Männlein/Weiblein vorgenommen
und danach nochmal nach Vergütung
und danach nochmal nach Vertragsverhältnis     :-[

Aber gerade kam mir der Gedanke, die Tabelle hat 10 Spalten mit je 15 Wertfeldern. Also mache ich 1 Haupt und 9 Unterberichte a 15 Feldern und schon bin ich fertig......(Kann man so viele Unterberichte einbauen ?)  ::)
If Brain <= requestoutofPost then
  PostonForum "Ich verstehe Dein Problem nicht....."
Else
  PostonForum "Denk erst mal über die Normalisierung nach......"
End If
 

Offline 69bruno

  • Heimwerker
  • Access-Profi
  • **
  • Beiträge: 262
Re: Abfrage ist zu komplex !
« Antwort #10 am: Januar 28, 2013, 12:20:51 »
Sooooooo, arbeite gerade Abfragen und Bericht um......da kriege ich ein Problem nicht gelöst.

Ich habe eine Abfrage(Berichtsabfrage1), die mir für jede Gruppe der Vertragsart eine Zahl wiedergibt (1=unbefristet,2=befristet).
daneben sollen 4 Vergütungsgruppen aufgeführt werden, obwohl wir nur 3 tatsächlich besetzt haben im Moment. Wie bekomme ich die Abfrage dazu, immer 4 anzuzeigen, auch wenn die 4. Gruppe keine Einträge hat ?

Ich hatte versucht, eine Tabelle(VG_Gr) anzulegen, in der die 4 Gruppenbezeichnungen drinstehen und habe sie in die Abfrage integriert. Als Beziehung hatte ich angegeben, dass alle Felder der Tabelle VG_Gr zu sehen sind und nur die Daten der Abfrage(Berichtsabfrage1), bei denen der Inhalt des Feldes Verg_Gr mit der Tabelle(VG_Gr) gleich sind.

Geht aber nicht.......

If Brain <= requestoutofPost then
  PostonForum "Ich verstehe Dein Problem nicht....."
Else
  PostonForum "Denk erst mal über die Normalisierung nach......"
End If