Announcement

Collapse
No announcement yet.

SQL-Unterabfrage in IIf-Ausdruck

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

  • SQL-Unterabfrage in IIf-Ausdruck

    Hallo zusammen,

    ich habe folgendes Problem:
    Eine Datenbank enthält die Daten schriftlicher Arbeiten die Studenten einer Uni verfassen. Dazu gibt es den jeweiligen Betreuer usw.
    Dann gibt es noch eine Tabelle (Obergrenzen Felix, Nicole,...), in der jeder Betreuer eintragen kann, wie viele Arbeiten er maximal betreuen will.
    In einer dritten Tabelle (Stop) soll der Wert Ja erscheinen, wenn die Zahl der Arbeiten eines Betreuers größer oder gleich der Obergrenze ist, die er angegeben hat.
    Zuerst wollte ich das in eine Abfrage packen, aber ich hatte immer Probleme mit dem Ausdruck der IIf-Bedingung (irgendwelche Syntaxfehler).
    Jetzt habe ich zwei Abfragen, wobei die erste eine Tabelle mit der Zahl der Arbeiten erzeugt, und die zweite dann das Update der Tabelle Stop vornimmt.
    Leider wird hierbei der Wert aus der Tabelle nicht ausgelesen, und ich weiß nicht warum.

    Abfrage 1:
    SELECT Count(*) AS Ergebnis INTO Zwischenablage
    FROM Arbeiten
    WHERE (((Arbeiten.Betreuer)="Felix Reichert") AND ((Arbeiten.[Art der Arbeit])="Bachelorarbeit") AND ((Arbeiten.Abgeschlossen)=No));

    Abfrage 2:

    UPDATE Stop, [Obergrenzen Felix] SET Stop.[Felix Stop BA] = IIf([Obergrenzen Felix]!Bachelorarbeiten<=Zwischenablage!Ergebnis,Yes,No) ;

    Kann mir jemand helfen? Kann ich das auch in eine Abfrage packen, indem ich die erste Abfrage als Unterabfrage in den IIf-Ausdruck kopiere? (in MSAcess?)?
    Vielen Dank im Voraus!
    Max
    Zuletzt editiert von Max_der_Mueller; 13.07.2007, 15:53.

  • #2
    Hi Max,
    habe hier dir eine Abfrage zusammengestellt, die dir in Access alle Betreuer ausspuckt, die noch nicht ausgelastet sind. Dies habe ich zumindest aus deiner nicht ganz klar formulierten Frage heraus gelesen.

    Struktur meiner Tabellen für dich:
    Tabelle Betreuer:
    BetreuerID,Name,Vorname,MaxEntry
    Tabelle Arbeiten:
    ID,Name,Betreuer,Art,Status

    Die Abfrage:
    Code:
    SELECT Betreuer.Name, Betreuer.Vorname, Betreuer.MaxEntry, b.Cnt
    FROM Betreuer,
    (
    SELECT Count(Betreuer) AS Cnt, Betreuer as BetreuerID
    FROM Arbeiten
    WHERE (((Arbeiten.Art)="Bachelorarbeit") AND (([Status])=No))
    GROUP BY Betreuer
    ) b where Betreuer.MaxEntry > b.Cnt and b.BetreuerID = Betreuer.BetreuerID
    Um diese Abfrage zu generieren wird eine Inline Abfrage verwendet.
    Schau dir diese Saeite mal an, da findest du die Beschreibung dazu.
    Komplexere_SQL_Abfragen.html

    Gruß Buchenberg

    Comment


    • #3
      Danke!

      Hi Buchenberg,

      konnte die Lösung zwar noch nicht testen (Stress durch andere Projekte ), aber das Ergebnis entspricht dem, was ich möchte. Statt die Betreuer zu haben, die ausgelastet sind erhalte ich nun die, die nicht ausgelastet sind - die jeweils andernen zu ermitteln ist dann wirklich kein Problem mehr.

      Herzlichen Dank für die Unterstützung!

      Gruß,
      Max

      Comment


      • #4
        hi,

        kein Problem, gerne geschehen.

        wenn du statt
        Betreuer.MaxEntry > b.Cnt
        Betreuer.MaxEntry <= b.Cnt nimmst hast du direkt dein Ergebnis

        Gruß Buchenberg

        Comment


        • #5
          hi,

          kein Problem, gerne geschehen.

          wenn du statt
          Betreuer.MaxEntry > b.Cnt
          Betreuer.MaxEntry <= b.Cnt nimmst hast du direkt dein Ergebnis

          Gruß Buchenberg

          Comment

          Working...
          X