• bin grade am erstellen ein paar reports in sql und hab ein problem mit einer abfrage. Muss mein Trac etwas erweitern

    ich habe viele records der struktur
    [milestone, ENG1-Stunden, ENG2-Stunden, ENGX-Stunden]

    milestones is eh klar.
    ENG1 sind die gebuchten stunden von Engineer1
    es gibt 20 Entwickler.


    ich möchte jetzt für alle milestones den Wert des Entwicklers der am meisten stunden gebucht hat.

    habs schon mit unions versucht. kommt net dahin.

    es handelt sich um sqlite -> kein greatest und kein for each row verfügbar :(

    ev. hat wer einen umweg.

    while (isAlive()) {
    beer++;
    }

    :verycool:

    Einmal editiert, zuletzt von Zoidberg (17. September 2009 um 15:23)

  • Das klingt zwar jetzt etwas radikal, aber ich würd vorschlagen, das kaputte Datenbankschema zu reparieren. Du hast hier das Problem, dass du das Datenbankschema ändern musst, wenn beispielsweise ein Entwickler hinzukommt.

    Mach' eine Tabelle für die Meilensteine, eine für die Entwickler, und eine Tabelle, welche die beiden verbindet und die Arbeitsstunden speichert. Um dann das von dir gewünschte Ergebnis zu erhalten, machst du einen Join über diese Tabellen (sind ggf. nicht alle drei notwendig), gruppierst nach den Meilensteinen und wählst aus jeder so entstehenden Gruppe die maximale Stundenanzahl.

    Für das existierende Datenbankschema fällt mir ad hoc keine Lösung ein. Wenn du aber mit diesem Schema weiterarbeitest, wirst du immer wieder mit solchen vermeintlich unlösbaren Problemen zu kämpfen haben.

  • hm, danke mal für den vorschlag. Ändern kann ich darf ich das DB Design nicht. Habs jetzt mal hinbekommen das das Script auf der Bash ausgeführt wird (und auch funktioniert). Hab mir aber zwei temporary tables erzeugen müssen da ich es nicht mit subselects lösen konnte.

    Jetzt ist aber das Problem das die TRAC-Webgui keine Create Statements zulässt (sicher auch aus Sicherheitsgründen).

    Jetzt meine abschließende Frage

    wenn ich folgendes konstrukt habe.

    select {alle interessanten Felder aus Abfrage 1, Berechnungsfeld aus Abfrage 2} from ( (SUBSELECT PRE) Abfrage1, (SUBSELECT POST), Abfrage2 )


    mein problem ist das Abfrage2 (POST) die Ausgabe von Abfrage1 benötigt aber nat. nicht gleich in der nächsten Zeile verfügbar ist.

    gibts da eine möglichkeit eine Art Reference auf Abfrage 1 zu erstellen.
    Hab als 938 einfach zu wenig mit DB-Systemen zutun gehabt :/

    while (isAlive()) {
    beer++;
    }

    :verycool:

Jetzt mitmachen!

Sie haben noch kein Benutzerkonto auf unserer Seite? Registrieren Sie sich kostenlos und nehmen Sie an unserer Community teil!