Oktober 23, 2021, 16:03:23

Neuigkeiten:

Wenn ihr euch für eine gute Antwort bedanken möchtet, im entsprechenden Posting einfach den Knopf "sag Danke" drücken!


Abfrage; DomAnzahl-Funktion

Begonnen von Whathetech, September 11, 2021, 13:35:37

⏪ vorheriges - nächstes ⏩

MzKlMu

Hallo,
wieso sind es jetzt plötzlich 5 Status. Die Mehrzahl von Status ist übrigens nicht Stadien, sondern einfach auch Status (gesprochen mit einem langen u).

Zitat von: undefinedName  Status_1  Status_2  Status_3  Status_4  Status_5
Dazu hat Ebs in #23 einen Ansatz gezeigt.
Gruß
Klaus

Whathetech

Zitat von: MzKlMu am September 11, 2021, 19:38:25Hallo,
wieso sind es jetzt plötzlich 5 Status. Die Mehrzahl von Status ist übrigens nicht Stadien, sondern einfach auch Status (gesprochen mit einem langen u).

Ist ja eigentlich erst einmal egal wieviele Status ich habe, oder?

Whathetech

Zitat von: ebs17 am September 11, 2021, 19:24:152) Pro Status wolltest Du eine Spalte. Das wäre mehr als eine. Vor allem hättest Du aber das Problem, wenn es zusätzliche Statuswerte geben wird, müsstest Du nachprogrammieren. Nachprogrammieren nur wegen ein paar neuer Daten ist ein Unding.

Es wird bei den 5 Status bleiben, daran wird sich auch nichts ändern, es muss also auch nicht nachprogrammiert werden.

MzKlMu

Hallo,
nein, es ist nicht egal wieviel Status es sind. Wenn du erst 4 schreibst und es sind dann 5,so muss man nachfragen, denn es ist wichtig für eine Lösung.

Erstelle eine kleine Beispieldb und lade diese hier hoch (als Zip File).
Gruß
Klaus

Whathetech

Zitat von: MzKlMu am September 11, 2021, 19:50:18nein, es ist nicht egal wieviel Status es sind. Wenn du erst 4 schreibst und es sind dann 5,so muss man nachfragen, denn es ist wichtig für eine Lösung.
Okay, darauf werde ich in Zukunft achten.

Zitat von: MzKlMu am September 11, 2021, 19:50:18Erstelle eine kleine Beispieldb und lade diese hier hoch (als Zip File).
Du meinst die ganze Access-Datenbank? Wie kann man das als zip-Datei verpacken?

ebs17

September 11, 2021, 20:03:07 #35 Letzte Bearbeitung: September 11, 2021, 21:15:17 von ebs17
Eine SQL-Anweisung. Du erinnerst Dich?
Eine KTA, die die vorhandenen Werte darstellt, ohne Vollständigkeit. Der Status 5 passiert dort nicht, also kann er da nicht auftreten:
TRANSFORM
   COUNT(X.Status) AS Y
SELECT
   X.Name
FROM
   (
      SELECT
         Name,
         Status,
         'Status_' & Status AS StatusX
      FROM
         Ausschuss
   ) AS X
GROUP BY
   X.Name
PIVOT
   X.StatusX
Für eine Vollständigkeit bräuchte man eine Statustabelle, die alle möglichen Werte enthält, unabhängig von deren zufälliger Verwendung. Bei der zugehörigen Datenmodellierung hilft Klaus kompetent und vmtl. gerne.

Abfragen gelingen dann (einfach), wenn vorher die Strukturen stimmen.
Mit freundlichem Glück Auf!

Eberhard

Whathetech

Zitat von: ebs17 am September 11, 2021, 20:03:07TRANSFORM
   COUNT(X.Status) AS Y
SELECT
   X.Name
FROM
   (
      SELECT
         Name,
         Status,
         'Status_' & Status AS StatusX
      FROM
         Ausschuss
   ) AS X
GROUP BY
   X.Name
PIVOT
   X.StatusX

Vielen, vielen Dank!!

Whathetech

September 11, 2021, 23:12:34 #37 Letzte Bearbeitung: September 11, 2021, 23:18:17 von Whathetech
Zitat von: ebs17 am September 11, 2021, 20:03:07TRANSFORM
   COUNT(X.Status) AS Y
SELECT
   X.Name
FROM
   (
      SELECT
         Name,
         Status,
         'Status_' & Status AS StatusX
      FROM
         Ausschuss
   ) AS X
GROUP BY
   X.Name
PIVOT
   X.StatusX

Das funktioniert eigentlich schon fast so wie ich es möchte, nur noch eine Kleinigkeit passt noch nicht:
Wenn in der Tabelle Ausschuss nirgends der Status 1 vorkommt, dann fehlt in der KTA auch die Spalte "Status_1". Das soll aber so nicht sein. Hättest du vielleicht eine Idee wie die Spalte in so einem Fall trotzdem bestehen bleiben könnte?

MzKlMu

Hallo,
Zitat von: Ebs17Hättest du vielleicht eine Idee wie die Spalte in so einem Fall trotzdem bestehen bleiben könnte?
Hat er in #33 und #23 beschrieben.
Du brauchst eine Statustabelle mit Status 1-5. Diese Tabelle wird dann über eine Abfrage mit LEFT JOIN zur jetzigen Tabelle hinzuverknüpft. Dann hast Du auch die fehlenden Status.
Und diese Abfrage wird dann Basis für die KTA.
Gruß
Klaus

Whathetech

Zitat von: MzKlMu am September 11, 2021, 23:33:59Hat er in #33 und #23 beschrieben.
Du brauchst eine Statustabelle mit Status 1-5. Diese Tabelle wird dann über eine Abfrage mit LEFT JOIN zur jetzigen Tabelle hinzuverknüpft. Dann hast Du auch die fehlenden Status.
Und diese Abfrage wird dann Basis für die KTA.

Die Tabelle habe ich jetzt erstellt: https://ibb.co/82pCj3r

Doch wie stelle ich das jetzt mit dem LEFT JOIN ein bzw. wo in der Abfrage ein?

Whathetech

Zitat von: MzKlMu am September 11, 2021, 23:33:59Hat er in #33 und #23 beschrieben.
Du brauchst eine Statustabelle mit Status 1-5. Diese Tabelle wird dann über eine Abfrage mit LEFT JOIN zur jetzigen Tabelle hinzuverknüpft. Dann hast Du auch die fehlenden Status.
Und diese Abfrage wird dann Basis für die KTA.

Ich hätte vielleicht noch ein weiteres Problem. In der Tabelle Ausschuss habe ich noch eine weitere Spalte namens "BA", wo man dann ein Ja/Nein Feld ankreuzen kann. Wie kann ich nun den Code 
Zitat von: ebs17 am September 11, 2021, 20:03:07TRANSFORM
   COUNT(X.Status) AS Y
SELECT
   X.Name
FROM
   (
      SELECT
         Name,
         Status,
         'Status_' & Status AS StatusX
      FROM
         Ausschuss
   ) AS X
GROUP BY
   X.Name
PIVOT
   X.StatusX
erweitern, sodass in dieser KTA zudem nur Namen und der Statusanzahl angezeigt werden, bei denen das Feld "BA" angekreuzt wurde?

MzKlMu

Hallo,
die Status Tabelle ist falsch.
Das muss eine Tabelle sein mit 5 Datensätzen und den Zahlen 1-5. Über die Zahl läuft ja die Beziehung.
LEFT JOIN wird in den Verknüpfungseigenschaften der Beziehung eingestellt.
Beziehung erstellen über die Statuszahlen, Beziehungslinie doppelt klicken, Typ ändern. In der SQL Sicht Typ prüfen und ggf. anderen Typ einstellen.

Ich würde erst eine Abfrage erstellen mit den beiden Tabellen (Beziehung vorher anlegen) und der Filterung.
Diese Abfrage wird dann Datenbasis der KTA.
Gruß
Klaus

Whathetech

Zitat von: MzKlMu am September 12, 2021, 00:48:01Hallo,
die Status Tabelle ist falsch.
Das muss eine Tabelle sein mit 5 Datensätzen und den Zahlen 1-5. Über die Zahl läuft ja die Beziehung.
LEFT JOIN wird in den Verknüpfungseigenschaften der Beziehung eingestellt.
Beziehung erstellen über die Statuszahlen, Beziehungslinie doppelt klicken, Typ ändern. In der SQL Sicht Typ prüfen und ggf. anderen Typ einstellen.

Ich würde erst eine Abfrage erstellen mit den beiden Tabellen (Beziehung vorher anlegen) und der Filterung.
Diese Abfrage wird dann Datenbasis der KTA.

Ok. Also die Status-Tabelle sollte jetzt korrekt sein: https://ibb.co/zb7CWPY
Doch wie erstelle ich eine Beziehung über die Statuszahlen?
Und was meinst du mit
Zitat von: MzKlMu am September 12, 2021, 00:48:01Ich würde erst eine Abfrage erstellen mit den beiden Tabellen (Beziehung vorher anlegen) und der Filterung.
Diese Abfrage wird dann Datenbasis der KTA.
?
Ist das eine andere Methode oder sollte ich das auch so machen?

Ich glaube ihr merkt, dass ich in Access nicht die hellste Kerze auf der Torte bin. Deshalb wäre es schön, wenn ihr euch noch ausführlicher ausdrücken könntet. :)

MzKlMu

September 12, 2021, 01:29:07 #43 Letzte Bearbeitung: September 12, 2021, 01:34:35 von MzKlMu
Hallo,
Die ID ist in der Statustabelle überflüssig. Und mache den Status zum Primärschlüssel.
Lade die DB hier hoch, anders wird das nix.
Zip Files kann man direkt im Windows Explorer anlegen.
Gruß
Klaus

ebs17

September 12, 2021, 09:59:08 #44 Letzte Bearbeitung: September 12, 2021, 10:20:16 von ebs17
ZitatDeshalb wäre es schön, wenn ihr euch noch ausführlicher ausdrücken könntet.
Bei Access / Datenbanken sollte man sich ganz schnell einige Grundlagen (Hilfe! Theorie!) aneignen, mit nur angucken und intuitiv etwas machen klappt es allermeistens nicht. Es ist deutlich anders als Excel ...

Daneben solltest Du Beiträge nicht laufend wiederholen, sondern man möchte eher den Eindruck bekommen, dass Du sie lesen und inhaltlich verarbeiten würdest, weil sonst das Wort UMSONST eine Bedeutung und Ausprägung bekommen kann.

ZitatWie kann ich nun den Code ... erweitern, sodass in dieser KTA zudem nur Namen und der Statusanzahl angezeigt werden, bei denen das Feld "BA" angekreuzt wurde?
Zusätzlich zu allem filtern ...? Selbstredend an der richtigen Stelle.

Nach einer Modellierung nach meinen Gedanken (für Bilder habe ich keine Zeit, keine DB usw.):
TRANSFORM
   COUNT(X.Status) AS Y
SELECT
   X.Name
FROM
   (
      SELECT
         A.Name,
         S.StatusID,
         'Status_' & S.StatusID AS StatusX
      FROM
         Statustabelle AS S
            LEFT JOIN
               (
                  SELECT
                     Name,
                     StatusID_ref
                  FROM
                     Ausschuss
                  WHERE
                     BA = True
               ) AS A
               ON S.StatusID = A.StatusID_ref) AS X
GROUP BY
   X.Name
PIVOT
   X.StatusX

BTW: In der Statustabelle  würde man sicher eine Bezeichnung hinzufügen. Es könnte ja sein, dass mit 42 (oder 4) nicht jeder aus dem Kalten heraus etwas anfangen kann.
Mit freundlichem Glück Auf!

Eberhard