Benutzer mit den meisten Antworten
SQL code funktioniert nicht!

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.idda 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??
Antworten
-
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
- Bearbeitet Stefan FalzModerator Freitag, 26. April 2013 07:44
- Als Antwort vorgeschlagen Olaf HelperMVP Freitag, 26. April 2013 11:18
- Als Antwort markiert Schosch93 Freitag, 26. April 2013 12:13
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
- Bearbeitet Stefan FalzModerator Freitag, 26. April 2013 07:08
-
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?? -
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
- Bearbeitet Stefan FalzModerator Freitag, 26. April 2013 07:44
- Als Antwort vorgeschlagen Olaf HelperMVP Freitag, 26. April 2013 11:18
- Als Antwort markiert Schosch93 Freitag, 26. April 2013 12:13