none
SQL code funktioniert nicht! RRS feed

  • Frage

  • Also ich habe eine datenstruktur hochgezogen. In dieser Datenbank werden unter anderem Auftraege gespeichert. Jeder auftrag hat n Bloecke (fremdschlüssel: auftragsnr in tabelle bloecke).  Jeder Block hat n positionen (Fremdschlüssel: blocknr in tabelle positionen)

    Nun geht es mir darum, herauszufinen, welche position innerhalb eines auftrags am spätesten bearbeitet wurde (zeit wird in jeder tabelle für jeden datensatz unter updated gespeichert), wobei das feld erledigt (in tabelle positionen) auf true (.t.) stehen muss, ansonsten halt die nächst beste position.

    die verbindung vom auftrag ist nur über die blöcke zur position möglich.

    Ich habe dann folgenen sql-befehl geschrieben, um die auszulesen:

    SELECT auftraege.id, positionen.id ,positionen.blockid ,positionen.updated ;
    FROM positionen ;
    INNER JOIN bloecke ON positionen.blockid == bloecke.blocknr ;
    INNER JOIN auftraege ON bloecke.auftragsnr == auftraege.id ;
    WHERE positionen.updated in ;
    (SELECT MAX(positionen.updated) FROM positionen WHERE positionen.erledigt == .t. GROUP BY positionen.blockid) ;
    GROUP BY auftraege.id

    da bekomme ich aber immer nur die meldung: "fehlende oder ungültige GROUP BY-Klausel."

    und ich kann mir nicht erklären wieso die nicht stimmt..

    könnt ihr mir da helfen??

    Freitag, 26. April 2013 06:50

Antworten

Alle Antworten

  • Hi,

    wer hat dir dieses Statement in den Block gehustet? Ein MS SQL Server Entwickler ja wahrscheinlich nicht, oder?

    Woher kommen die Semikola? Woher ==? Woher .t.? Das gibts alles nicht bzw. wird (wie ;) bei T-SQL anders verwendet.

    SELECT auftraege.id, positionen.id ,positionen.blockid ,positionen.updated
    FROM   positionen
           INNER JOIN bloecke   ON positionen.blockid = bloecke.blocknr
           INNER JOIN auftraege ON bloecke.auftragsnr = auftraege.id
    WHERE  positionen.updated IN
           (
            SELECT MAX( positionen.updated ) FROM positionen WHERE positionen.erledigt = @Parameter GROUP BY positionen.blockid
           )
    GROUP BY auftraege.id

    wäre dann in etwa die T-SQL Entsprechung.

    Da ich vermute, dass Du gar nicht mit Microsoft SQL Server arbeitest, die Frage: Welches DBMS verwendest Du?


    Gruß, Stefan
    Microsoft MVP - Visual Developer ASP/ASP.NET
    http://www.asp-solutions.de/ - Consulting, Development
    http://www.aspnetzone.de/ - ASP.NET Zone, die ASP.NET Community



    Freitag, 26. April 2013 07:05
    Moderator
  • also ich bin anwendungsentwickler, und arbeite mit der IDE Visual FoxPro (Spache: VoxPro). Diese IDE liefert die DBMS direkt mit (FoxPro eigenes DBMS)

    Und in foxpro ist das .t.  der Wert true und .f. der wert false.
    In FoxPro ist eine neue Zeile ein neuer Befehl. Die semikola sorgen dafür, dass sie die zeile in der das Semikolon steht und die nachfolgende als zusammengehöriger befehl erkennt wird. Die machen das ganze zeilen übergreifend.

    Bei vergleichen hat FoxPro auch zwei möglichkeiten, einmal das "="  und einmal das "==" das "==" lässt auf jeden fall nur eine exakte übereinstimmung zu, während das "=" auch ein "Jonny" als "Jonn" erkennen würde.
    Bei boolischen werten würde der ohne "==" immer auf true prüfen, egal ob eigentlich auf false geprüft werden soll oder nicht. Erst wenn der zu prüfende wert false ist, wird erst geguckt, welcher wert denn bestehen sollte. Mitt dem "==" prüft der dann direkt komplett..

    Ja die Ide hat ihre eigenarten, lässt sich aber gerade nicht ändern :) Wenn cheffe sagt programmier mit FoxPro, dann muss ich wohl mit foxPro programmieren..


    JA aber was ist denn jetzt mit der GROUP BY -Klausel nicht in ordnung??

    Freitag, 26. April 2013 07:33
  • Hi,

    Du hast aber im Microsoft SQL Server Forum gepostet. Das hat mit FoxPro in etwa so viel zu tun wie ein Stuhl mit nem Blatt Papier.

    Stell die Frage mal hier:

      http://social.msdn.microsoft.com/Forums/de-DE/foxprode/threads

    Da dürftest Du dann eher eine Antwort erhalten.


    Gruß, Stefan
    Microsoft MVP - Visual Developer ASP/ASP.NET
    http://www.asp-solutions.de/ - Consulting, Development
    http://www.aspnetzone.de/ - ASP.NET Zone, die ASP.NET Community


    Freitag, 26. April 2013 07:43
    Moderator
  • achsoo.. ich hab einfach nur nach sql gesucht..

    nagut, trozdem danke

    Freitag, 26. April 2013 08:26
  • Hallo Schosch,

    es gibt eine Menge Unterschiede, ob Dein SQL-Statement auf einem SQL-Server ausgeführt werden soll oder innerhalb von VFP .

    Gruss Uli

    • Als Antwort markiert Schosch93 Freitag, 9. Oktober 2015 11:59
    Samstag, 27. April 2013 14:16