Announcement

Collapse
No announcement yet.

Access SQL (JOIN oder ähnliches)

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • Access SQL (JOIN oder ähnliches)

    Hallo, ich muss für ein UNI-Projekt (Stadionevakuierung) eine Auswertung einer Umfrage machen.
    Bis jetzt war alles sehr einfach, jedoch hänge ich jetzt seid 5 Stunden etwas.
    Deshalb wollte ich euch fragen ob Ihr eine Idee habt wie ich das Problem lösen kann.

    Meine Datenbank ist komplexer, aber ich habe mal versucht ein Minimalbeispiel zu erstellen.

    Wir haben folgende Datenbank gegeben: tblMain
    id: fortlaufende eindeutige Nummer
    dtBlock: Buchstabe (1,...,Z)
    dtAusgang: einer der möglichen Ausgänge {A1,A2,A3}

    Nun würde ich gerne folgendes Resultat herleiten:


    Die letzte Spalte ist also immer die Summe von den drei dazugehörigen Zeilen.

    Ich schaffe es die Spalten {1,2,3} oder {1,2,4} zu erstellen, schaffe es jecoh nicht zusammen.

    {1,2,3}
    SELECT dtBlock,dtAusgang, COUNT(*)
    FROM tblMain
    GROUP BY dtBlock,dtAusgang;

    {1,2,4}
    SELECT dtBlock, COUNT(*)
    FROM tblMain
    GROUP BY dtBlock;

    ich wäre echt dankbar wenn mir jemand helfen könnten.

    Liebe Grüsse

    BobG
    Attached Files

  • #2
    Hi,

    So auf Anhieb würde mir hier auch nur einfallen, dass Du komplett eine Unterabfrage bezogen auf den Block als Element mit ausleitest, also:

    [highlight=sql]
    SELECT dtBlock As Block, dtAusgang, Count(*) As AnzahlAusgang,
    (SELECT Count(*) FROM tblMain WHERE dtBlock=Block) As AnzahlBlock
    FROM tblMain
    GROUP BY dtBlock,dtAusgang
    [/highlight]

    Grundsätzlich ist innerhalb einer Ausgabezeile eine unterschiedliche Gruppierung nämlich nicht möglich. Selbst ob diese Möglichkeit überhaupt geht, weiß ich nicht.

    Ansonsten vielleicht noch so etwas wie den Ansatz, den Du ja schon angedeutet hast:

    [highlight=sql]
    SELECT Ausw1.dtBlock, Ausw1.dtAusgang, Ausw1.AnzahlAusgang, Ausw2.AnzahlBlock
    FROM (SELECT dtBlock,dtAusgang,Count(*) As AnzahlAusgang FROM tblMain GROUP BY dtBlock,dtAusgang) As Ausw1
    INNER JOIN (SELECT dtBlock, Count(*) FROM tblMain As AnzahlBlock GROUP BY dtBlock) As Ausw2) ON Ausw1.dtBlock=Ausw2.dtBlock
    [/highlight]

    Wenn man allerdings bedenkt, dass die Frage hier schon seit 19.9. ohne Antwort rumhängt, habe ich jetzt entweder Deine Hausaufgaben gemacht (was andere nicht wollten, damit Du selbst die Genugtuung hast, auf die Lösung gekommen zu sein, als Hausaufgabenhilfe wäre es jetzt aber eh zu spät ), oder die Antwort ist doch nicht so einfach, wie ich dachte.

    Desweiteren bleibt Dir natürlich immer noch einzelne Views zu definieren, und die miteinander zu verknüpfen, das wäre im Prinzip aber wie Ansatz 2

    Gruß Martin
    Zuletzt editiert von M.Dietz; 05.11.2010, 11:15. Reason: SQL-Formatierung

    Comment


    • #3
      Hallo M.Dietz, Deine Antwort ist total korrekt.
      Ich binde mir dne Threat mal an meinen Nick.
      Wenn es stressig wird, vergesse ich diese Unterabfrage
      leider auch des öfteren.
      Gruß Che

      Comment

      Working...
      X