Hallo, ich habe da ein kleines Problem und hoffe auf ein wenig Hilfe.
Folgender Sachverhalt:
Ich habe eine Tabelle "Ausschuss", in der es die Spalten "ID", "Name" und "Status" gibt, wobei der Status ganze Zahlen von 1 bis 4 annehmen kann. https://ibb.co/WGdqthn
Mit einer Abfrage möchte ich mir nun anzeigen lassen, wie oft der jeweilige Name den jeweiligen Status hat.
Die Abfrage wird dann die Spalten "Name" und Status alias Status_1, Status_2, Status_3 und Status_4 haben, in denen die jeweilige Anzahl der Stadien angezeigt werden soll.
Um dies zu verwirklichen, habe ich zunächst die Spalte "Name" in der Abfrage gruppiert.
Des Weiteren habe ich mich an der "DomAnzahl"-Funktion versucht, die aber nicht so funktioniert wie ich es möchte. Genauer gesagt wird einfach gar nichts als Ergebnis angezeigt. https://ibb.co/wgB1Tyx
Ich habe übrigens das ganze erst einmal für die Spalte "Status_1" ausprobiert, nicht dass ihr euch wundert.
Abfrage Ergebnis: https://ibb.co/9V6gdQ0
Ich hoffe mein Problem ist verständlich und die Screenshots einsehbar. Falls nicht, so bitte ich um Rückmeldung. Danke!
Hallo,
da braucht es kein Kriterium, einfach löschen.
Zitat von: MzKlMu am September 11, 2021, 13:58:43Hallo,
da braucht es kein Kriterium, einfach löschen.
Dann bekomme ich aber leide folgende Fehlermeldung: https://ibb.co/NF8pxyd
Oder hast du was anderes gemeint?
Hallo,
gruppiere nach Name und Status und bestimme zusätzlich die Anzahl von Status.
Zeige die Abfrage als SQL Text, nicht als Bild.
Zitat von: MzKlMu am September 11, 2021, 14:04:39Hallo,
gruppiere nach Name und Status und bestimme zusätzlich die Anzahl von Status.
Zeige die Abfrage als SQL Text, nicht als Bild.
SQL: https://ibb.co/bNBpgCF
Zitat von: MzKlMu am September 11, 2021, 14:04:39Hallo,
gruppiere nach Name und Status und bestimme zusätzlich die Anzahl von Status.
Zeige die Abfrage als SQL Text, nicht als Bild.
Und dabei angezeigt wird folgendes: https://ibb.co/k3yKhwT
Zitat von: MzKlMu am September 11, 2021, 14:04:39Hallo,
gruppiere nach Name und Status und bestimme zusätzlich die Anzahl von Status.
Zeige die Abfrage als SQL Text, nicht als Bild.
SELECT Ausschuss.Name, Ausschuss.Status AS Status_1
FROM Ausschuss
GROUP BY Ausschuss.Name, Ausschuss.Status
HAVING (((Ausschuss.Status)=DCount("[Status]","[Ausschuss]","[Status]=1")));
Hallo,
wie gesagt, ein Kriterium (HAVING oder WEHRE) ist hier fehl am Platz.
Versuche es so:
SELECT Name, Status, Count(Status) AS AnzahlvonStatus
FROM Ausschuss
GROUP BY Name, Status
Das funktioniert leider noch nicht so wie ich möchte. Ich dachte ich brauche das Kriterium und die Funktion "DomAnzahl" um nach den einzelnen Stadien zu filtern, oder wo sollte man sonst filtern...?
Hallo,
Du brauchst nicht zu filtern.
Die Abfrage zeigt doch das an was Du willt, die Anzahl eines Status je Name und Status.
PS:
Bitte keine vollständigen Beiträge zitieren, in direkter Antwort braucht es meist kein Zitat. Das Zitat habe ich gelöscht.
Zitat von: MzKlMu am September 11, 2021, 14:41:33Die Abfrage zeigt doch das an was Du willt, die Anzahl eines Status je Name und Status.
Danke, das wäre auf jeden Fall eine Lösung. Nur wäre es mir lieber, wenn jeder Name nur einmal vorkommt und es dann für jeden Status eine extra Spalte gibt. Also so ungefähr:
Name Status_1 Status_2 Status_3 Status_4
Das kann eine Kreuztabellenabfrage leisten, dafür gibt es einen Assistenten.
Deine gewünschten Spaltennamen müsstest Du zuvor zusammenbasteln.
Zitat von: ebs17 am September 11, 2021, 14:59:36Das kann eine Kreuztabellenabfrage leisten, dafür gibt es einen Assistenten.
Deine gewünschten Spaltennamen müsstest Du zuvor zusammenbasteln.
Vielen, vielen Dank!!
Zitat von: ebs17 am September 11, 2021, 14:59:36Das kann eine Kreuztabellenabfrage leisten, dafür gibt es einen Assistenten.
Deine gewünschten Spaltennamen müsstest Du zuvor zusammenbasteln.
Danke für die Lösung. Mir ist jedoch gerade aufgefallen, dass ich mit einer Kreuztabellenabfrage nicht beliebig viele Spalten hinzufügen kann. Wenn ich zB kein Feld in der Tabelle habe mit dem Status 1, dann tritt ein Fehler in der Abfrage auf. D.h. dass die Kreuztabellenabfrage vielleicht doch nicht thewaytogo ist, oder?
Zitatnicht beliebig viele Spalten hinzufügen kann
Nun, die Maximalzahl an Spalten in Tabellen und Abfragen in Jet beträgt 255. Gast Du Dich da herangearbeitet?
Nebenbei hätte man da ein Darstellungsproblem, denn mit einem Blick überschaubar ist das nicht mehr.
Zitat von: ebs17 am September 11, 2021, 16:02:04Nun, die Maximalzahl an Spalten in Tabellen und Abfragen in Jet beträgt 255. Gast Du Dich da herangearbeitet?
Nebenbei hätte man da ein Darstellungsproblem, denn mit einem Blick überschaubar ist das nicht mehr.
Ich glaube ihr versteht nicht genau was ich möchte xD
Es geht nicht um die maximale Spaltenanzahl, sondern darum, dass man bei einer Kreuztabellenabfrage keine neuen, individuelle Spalten hinzufügen kann. Ich hoffe ihr versteht was ich meine... :)
Die Spalten der KTA ergeben sich ausschließlich aus der Berechnung (Gruppierung + Pivot).
Man kann aber eine Auswahlabfrage mit der KTA verknüpfen und gewinnt damit weitere Möglichkeiten.
Zitat von: ebs17 am September 11, 2021, 16:17:19Die Spalten der KTA ergeben sich ausschließlich aus der Berechnung (Gruppierung + Pivot).
Man kann aber eine Auswahlabfrage mit der KTA verknüpfen und gewinnt damit weitere Möglichkeiten.
OK... aber geht es nicht viel einfacher mit einer Abfrage und der "DomAnzahl"-Funktion?
Deiner Vorliebe zu DomAnzahl würde ich entgegenhalten: Dauerfeuer mit Domänenaggregatfunktionen ist meistens riesenaufwändig, wenn auch intellektuell einfach.
Eine DAF ist eine vollständige Abfrage, zusätzlich gekapselt in einer Accessfunktion. Sie holt aber nur genau einen Wert, egal welcher Aufwand da intern getrieben wird.
Wer so etwas bevorzugt, für den ist es auch normal, die Getränke für die 200-Personen-Party (oder 1.200?) aus dem Getränkemarkt immer einzeln flaschenweise zu holen und dafür dann mehrfach Bekanntschaft mit Ampeln, Stoppschildern, der Schlange an der Kasse usw. zu machen. Ja, einfach ist das ... aber in einer ordentlichen Anwendung sollte Performance im Vordergrund stehen.
Zitat von: ebs17 am September 11, 2021, 16:25:26Deiner Vorliebe zu DomAnzahl würde ich entgegenhalten: Dauerfeuer mit Domänenaggregatfunktionen ist meistens riesenaufwändig, wenn auch intellektuell einfach.
Eine DAF ist eine vollständige Abfrage, zusätzlich gekapselt in einer Accessfunktion. Sie holt aber nur genau einen Wert, egal welcher Aufwand da intern getrieben wird.
Wer so etwas bevorzugt, für den ist es auch normal, die Getränke für die 200-Personen-Party (oder 1.200?) aus dem Getränkemarkt immer einzeln flaschenweise zu holen und dafür dann mehrfach Bekanntschaft mit Ampeln, Stoppschildern, der Schlange an der Kasse usw. zu machen. Ja, einfach ist das ... aber in einer ordentlichen Anwendung sollte Performance im Vordergrund stehen.
Ich habe leider nur wenig Ahnung von Access in dieser Hinsicht. Würdest du mir eventuell zeigen, wie ich das dann am besten mache? :)
Zitatwie ich das dann am besten mache?
Das ist was genau?
Die KTA hast Du anscheinend hinbekommen. Eine Auswahlabfrage mit weiteren Feldern zu erstellen sollte auch gelingen (ich kenne Deine Anforderungen nicht). Beide könnte man als gespeicherte Abfragen als Zwischenergebnis ablegen.
Wenn man beide Abfragen verknüpfen will, braucht man einen passenden Schlüssel. Diesen müsste man, wenn nicht schon vorhanden, jeweils ergänzen. Dann kann man sie in einer weiteren Abfrage zusammenbringen.
Für eine Abfrage im Stück: Grundlagen - SQL ist leicht (6) - Komplexe Abfragen schreiben und lesen (https://www.ms-office-forum.net/forum/showthread.php?p=1633105#post1633105)
Grundlegend: Wenn man sich über eine Abfrage unterhält, sollte man die SQL-Anweisung zeigen, besser als kopierfähigen Text (ein Bild müsste man abmalen). Da steht alles drin.
Dazu sollte man das Beziehungsbild mitgeben, damit die Tabellenverhältnisse klar sind. In Sachen Einfachheit und Performance könnten nämlich andere Wege eingeschlagen werden als sie der Unschlüssige vorgedacht hat.
Und selbstredend sollte klar sein, wie das Ergebnis aussehen soll.
Teilweise ist eine Abfragegestaltung zusätzlich sehr von verwendeten Daten abhängig. Dann sollten einige aussagekräftige Datensätze mitgeteilt werden, gerne anonymisiert, aber nicht sinnentstellt, und Beispieldaten sollten auch die Grenzfälle und Ausreißer enthalten, damit die gedachte Lösung dann auch über alles funktionieren könnte.
Also: Ausgangssituation hinreichend darstellen wie dann auch die Zielsituation. Wege legt man dann gerne selber fest.
Hallo,
Zitat von: undefineddass man bei einer Kreuztabellenabfrage keine neuen, individuelle Spalten hinzufügen kann.
Was willst Du denn da für Spalten hinzufügen ?
Willst Du für jeden Status in der KTA eine Spalte anzeigen, egal ob es da einen Wert gibt oder nicht ?
Zitat von: MzKlMu am September 11, 2021, 17:47:30Was willst Du denn da für Spalten hinzufügen ?
Willst Du für jeden Status in der KTA eine Spalte anzeigen, egal ob es da einen Wert gibt oder nicht ?
Ganz genau. Ich möchte so viele Filter für Stadien hinzufügen wie ich möchte. Und diese Möglichkeit sehe ich bei KTAs nicht.
Ich glaube mittlerweile, dass ich wirklich schlecht im erklären bin xD
ZitatFilter für Stadien
Was ist das?
Zitathinzufügen wie ich möchte
Damit die Abfrage das tut, was Du willst, musst Du es ihr sagen (Gedankenübertragung wird noch nicht funktionieren).
Die Rückfrage von Klaus verstehe ich, die ist klar und umsetzbar. Wer vollständige Mengen will, muss sie auch ins Spiel bringen. Etwa ...
... Statustabelle LEFT JOIN DeineTabelle ...
... als Basis für die KTA.
Zitat von: ebs17 am September 11, 2021, 19:10:25Was ist das?
Ich meine damit die Anzahl des Status bei der jeweiligen Person.
Und ich verstehe immernoch nicht warum das hier nicht einfach funktionieren will: https://ibb.co/HqmBX09
Denn als Ergebnis bekomme ich das hier: https://ibb.co/vq6QSz8
Ich verstehe das schon.
1) Man müsste schon pro Name zählen und nicht über alles, es sei denn, das ist so gewollt.
2) 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.
Hallo,
ZitatUnd ich verstehe immernoch nicht warum das hier nicht einfach funktionieren will:
Das Kriterium mit DomAnzahl ist völlig sinnfrei. Wie Du hier auf DomAnzahl kommst verstehe ich nicht.
Wenn Du auf Status 1 filtern willst, schreibe einfach eine 1 rein.
Zitat von: ebs17 am September 11, 2021, 19:24:151) Man müsste schon pro Name zählen und nicht über alles, es sei denn, das ist so gewollt.
2) 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.
Ich glaube wir sind auf dem richtig Weg :)
Das Ergebnis der Abfrage soll dann so aussehen:
Name Status_1 Status_2 Status_3 Status_4 Status_5
Da würde ich das wiederholen, was ich bereits geschrieben habe.
Zitat von: MzKlMu am September 11, 2021, 19:29:00Das Kriterium mit DomAnzahl ist völlig sinnfrei. Wie Du hier auf DomAnzahl kommst verstehe ich nicht.
Wenn Du auf Status 1 filtern willst, schreibe einfach eine 1 rein.
Wenn ich die Abfrage dann so gestalte: https://ibb.co/DwcBp4M
Status_2 usw. habe ich erst einmal weggelassen, also nicht wundern.
Dann bekomme ich aber folgedes Ergebnis: https://ibb.co/WGkHynb
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.
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?
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.
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).
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?
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.
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!!
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?
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.
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?
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?
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.
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. :)
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.
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.
Zitat von: MzKlMu am September 12, 2021, 01:29:07Lade die DB hier hoch, anders wird das nix.
Hier die Datenbank: https://www.file-upload.net/download-14688927/Database11-Kopie.rar.html
Zitat von: ebs17 am September 12, 2021, 09:59:08TRANSFORM
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
Wenn ich diesen Code ausführen möchte, bekomme ich allerdings folgenden Fehler: https://ibb.co/BVvz02w
Hallo,
bitte die Datenbank als Zip-File (Zip hatte ich mehrfach gesagt) hier im Forum als Dateianhang hochladen.
Ich lade mir von fremden Seiten nichts herunter. Auch Deine Bilder bitte.
Ich brauche auch Zip, ich habe keinen Rar Entpacker installiert.
Vor dem Zippen die Datenbank "Komprimieren/Repariern" (Access Dienstprogramm).
PS:
Ich bin erst heute Abend wieder im Forum.
Zitat von: MzKlMu am September 12, 2021, 10:57:26Hallo,
bitte die Datenbank als Zip-File (Zip hatte ich mehrfach gesagt) hier im Forum als Dateianhang hochladen.
Ich lade mir von fremden Seiten nichts herunter. Auch Deine Bilder bitte.
Ich brauche auch Zip, ich habe keinen Rar Entpacker installiert.
Zip-Datei: https://www.file-upload.net/download-14688968/Database11-Kopie.zip.html
Wie man eine Datei in diesem Forum einer Nachricht anhängt, weis ich leider nicht.
@Whathetech Unter dem Antwortfenster gibt es einen Pfeil mit der Beschriftung
"Attachments and other options". Klick mal drauf, da siehst du dann,
wie man es macht.
Das gilt i.Ü. auch für Bilder. Codeschnipsel dann auch bitteschön
zwischen die Code-Tags (siehe Symbolleiste über dem Antwortfenster).
gruss ekkehard
Zitat von: MzKlMu am September 12, 2021, 10:57:26Hallo,
bitte die Datenbank als Zip-File (Zip hatte ich mehrfach gesagt) hier im Forum als Dateianhang hochladen.
Ich lade mir von fremden Seiten nichts herunter. Auch Deine Bilder bitte.
Ich brauche auch Zip, ich habe keinen Rar Entpacker installiert.
Anbei die Datenbank und ein Screenshot des Fehlers zusammen mit dem code, wenn ich folgenden Code ausführen möchte:
Zitat von: Whathetech am September 12, 2021, 10:29:07TRANSFORM
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
Ist das vielleicht ein Fehler im Code?
Fehler: Klar, es stimmt. In Deiner Datenbank gibt es nicht dieses Feld (und weitere, die ich benutze). Wer die Fehlermeldung liest und nicht nur Bildchen erzeugt, kann das nachvollziehen.
Ich schrieb explizit:
Nach einer Modellierung nach meinen GedankenDas ist die Kurzzusammenfassung von Inhalten aus vorangegangenen Beiträgen und einigen Selbstverständlichkeiten wie
- eigene Statustabelle
- Erzeugung einer Beziehung zwischen den nunmehr zwei Tabellen
- Verwendung eines üblichen Bezeichnungssystems für Primär- und Sekundärschlüssel
Diese Schritte müsstest Du erst tun, VOR dem simplen Kopieren und Anwenden der SQL-Anweisung.
Auch wenn jemand erzählt, er sei Neuling, er kann nichts (und schlimmer), unterstelle ich jedem, dass er die Fähigkeit und den Willen zum Lernen hat, mehr noch, ich erwarte das. Wenn jemand in der Sänfte getragen werden will, um seinen eigenen A... nicht bewegen zu müssen, dann bin ich als Träger weniger geeignet.
So hatte ich also explizit etwas Zeit verstreichen lassen, um Dir diese zu lassen, die vorhandenen Beiträge nicht nur anzugucken, sondern zu
lesen im Sinne von inhaltlich wahrnehmen, verstehen, Hinweise umsetzen usw.
Die Anweisung enthält noch zwei wirkliche Fehler - ich schrieb die ja aus reiner Abstraktion auf ohne ein nachfolgendes Probieren, und Abstraktion und Übersicht sind oft nicht vollkommen:
ZitatTRANSFORM
COUNT(X.StatusID_ref) AS Y
SELECT
X.Name
FROM
(
SELECT
A.Name,
A.StatusID_ref,
'Status_' & S.StatusID AS StatusX
...
@Whathetech Ändere zunächst mal die Feldnamen und -Datentypen
Tabelle Ausschuss
- AusschussID, Autowert
- AusName, Text ("Name" ist ein reserviertes Wort)
- StatusID_ref, Zahl (LongInteger)
- BA, Ja/Nein
Tabelle StatusTabelle
- StatusID, Autowert
- Bezeichnung, Text (verschickt, berechnet, erledigt oder was immer du für Status hast)
Wozu hast du da ein Zahlenfeld in dem nur der PK wiederholt wird?
Haben die Status keine Bezeichnung? Ich meine, gut, 4 Status kann
man sich schon merken, aber wozu? - Ich habe eine DB die mir den Status
im Klartext anzeigen kann.
Die Beziehung zwischen diesen beiden Tabellen sieht dann so aus
Statustabelle 1:n Ausschuss
Mit den o.a. Feldnamen funzt die Abfrage dann auch
TRANSFORM COUNT(S.StatusID) AS Y
SELECT X.AusName
FROM
(SELECT A.AusName, S.StatusID, 'Status_' & S.StatusID AS StatusX
FROM Statustabelle AS S
LEFT JOIN (SELECT AusName, StatusID_ref FROM Ausschuss WHERE BA = True) AS A
ON S.StatusID=A.StatusID_ref) AS X
GROUP BY X.AusName
PIVOT X.StatusX;
bzw., da es jetzt Klartexte für die Status gibt
..., S.Bezeichnung AS StatusX ...
Das Ganze liesse sich noch verbessern, wenn es auch eine Tabelle für die
Namen geben würde. Deren PK würde man als FK statt des Namens in der Tabelle
"Ausschuss" mitführen, und es liesse sich damit gruppieren.
gruss ekkehard