Announcement

Collapse
No announcement yet.

Query über 3 Tabellen, mit Aggregatfunktion, bekomm's nicht hin

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

  • Query über 3 Tabellen, mit Aggregatfunktion, bekomm's nicht hin

    Hallo!

    Ich habe 3 Tabellen:<br>
    -die Personendaten<br>
    -die Weiterbildungstermine<br>
    -Tabelle, um die beiden anderen Tabellen zu verknüpfen:<br>
    P_Nr -> Person<br>
    Teilnahme_Nr -> Weiterbildung<br>
    also die Teilnehmer der einzelnen Termine auflistet<br><br>

    So und jetzt möchte ich eine Abfrage starten, die folgendes ausgibt:
    Name, Vorname, LETZTER WEITERRBILDUNGSTERMIN<br><br>

    hier ist das, was ich bis jetzt zustande gebracht habe, es funktioniert aber nicht <br><br>
    <pre>
    SELECT m.name, m.vorname,
    (SELECT MAX(w.datum)
    FROM Weiterbildungstermine w, Teilnehmer t
    WHERE t.P_Nr = m.nummer AND t.Teilnahme_nr = w.nummer)
    AS datum
    FROM Personendaten m
    WHERE m.aktiv = TRUE
    </pre><br>
    Ja, was mach' ich falsch???<br>
    <b>Danke im Voraus</b>

    Mfg

  • #2
    Hallo FBrosig,

    <B>WHERE m.aktiv = TRUE</B> <---- Hängt ab von der Datenbank. In einer Paradox Tabelle funktioniert dieses Script anstandslos. Führt man dieses Script jedoch auf einer MS SQL Datenbank aus, kommt es zu einem Fehler, da er den Boolsch'n Datentyp nicht kennt. In MS SQL verwendet man dazu entweder den Bit-, Int- oder String-Datentyp.

    <B>AS datum</B> <---- Hängt ebenfalls ab von der Datenbank. Der SQL Server von Microsoft akzeptiert diese Schreibweise. Jedoch auf einer Oracle-Datenbank muss der Befehl <B>AS</B> weggelassen werden.

    Gruß, To

    Comment


    • #3
      Hallo!<br><br>

      Erstmal Danke<br><br>

      das geht bei mir jedoch alles,<br>
      weil ich nicht so'n dicken Datenbankserver habe <bR><br>

      Das Problem ist die richtige Anzeige, das richtige Filtern, mit dem letzten Weiterbildungstermin, das bekomm ich nicht hin<br><bR>

      Entweder wird das höchste Datum aus der ganzen Tabelle angezeigt, oder gar kein Datum <br><BR>

      Mfg
      F

      Comment


      • #4
        Hallo,<pre>
        SELECT m.name, m.vorname, MAX(w.datum)
        FROM Personendaten m,
        Weiterbildungstermine w,
        Teilnehmer t
        FROM Personendaten m
        WHERE m.aktiv = TRUE
        and t.P_Nr = m.nummer
        AND t.Teilnahme_nr = w.nummer
        group by m.name, m.vorname
        </pre>
        sollte eigentlich das gewünschte Ergebnis liefern.

        Gruß Fal
        Wenn du denkst du hast alle Bugs gefunden, dann ist das ein Bug in deiner Denksoftware.

        Quellcode ohne ein Mindestmaß an Formatierung sehe ich mir nicht an! Ich leiste keinen Privatsupport per Mail oder PN!

        Comment


        • #5
          <b>DANKE Falk</b>,<br>
          ...so isses <br><br>

          Mfg<br>
          FBrosig<br><br>

          PS: Falk Prüfer 4 presiden

          Comment


          • #6
            ...da bin ich wieder *duck*<br><br>

            die SQL-Anweisung von Falk funktioniert 100%ig.<bR>
            Aber ich habe vergessen zu sagen, dass es auch Personen gibt, die bisher noch überhaupt keinen Weiterbildungstermin hatten.<br>
            Und die tauchen bei obiger Abfrage nicht auf <br><br>

            whadda ratlos<br><br>

            Mfg<br>
            FBrosig<br><br>

            <b>Danke schonmal</b&gt

            Comment


            • #7
              Hallo,

              dann mußt du den Inner Join noch auf einen Outer Join umbauen:<pre>
              SELECT m.name, m.vorname, MAX(w.datum)
              FROM (Personendaten m left outer join Teilnehmer t
              on t.P_Nr = m.nummer) left outer join Weiterbildungstermine w
              on t.Teilnahme_nr = w.nummer
              WHERE m.aktiv = TRUE
              group by m.name, m.vorname </pre>

              Gruß Fal
              Wenn du denkst du hast alle Bugs gefunden, dann ist das ein Bug in deiner Denksoftware.

              Quellcode ohne ein Mindestmaß an Formatierung sehe ich mir nicht an! Ich leiste keinen Privatsupport per Mail oder PN!

              Comment


              • #8
                *freu*<br>
                <b>DANKESCHÖN</b><br>
                ...ich werde wohl nach einem ausführlichem SQL-Buch Ausschau halten müsse

                Comment

                Working...
                X