Oktober 22, 2021, 21:33:59

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 ⏩

Whathetech

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

MzKlMu

September 12, 2021, 10:57:26 #47 Letzte Bearbeitung: September 12, 2021, 11:18:47 von MzKlMu
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.
Gruß
Klaus

Whathetech

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.

Beaker s.a.

@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
--
Beaker s.a., der lieber an seinem eigenen Projekt arbeiten würde/sollte, aber irgendwie immer gerne seinen Senf dazu gibt ;-)
S.M.I².L.E.

Whathetech

September 12, 2021, 15:53:12 #50 Letzte Bearbeitung: September 12, 2021, 21:24:55 von Whathetech
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?

ebs17

September 13, 2021, 13:35:52 #51 Letzte Bearbeitung: September 13, 2021, 13:42:18 von ebs17
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 Gedanken
Das 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
...
Mit freundlichem Glück Auf!

Eberhard

Beaker s.a.

@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
--
Beaker s.a., der lieber an seinem eigenen Projekt arbeiten würde/sollte, aber irgendwie immer gerne seinen Senf dazu gibt ;-)
S.M.I².L.E.