Benutzer mit den meisten Antworten
Komplexe abfrage in SqlCE

Frage
-
Ich komme grad mit einem TableAdapter in VS2008 nicht zurecht der auf eine SqlCe Datenbank zeigen soll.
Ich habe zwei Tabelle der form
Fahrer:
SID | Name | ...
1 Peter ....
2 Michael ...
Zeit:
Datum | FahrerSID( foreign key) | Modus | Zeit
20.3 1 Single 45,6
21.3 2 Double 45.9
21.3 1 Single 65,3
und rauskommen soll sowas wie
Bestzeiten
Name | Modus |Häufigkeit | (best-)Zeit | Datum
Peter single 5 45,6 20.3
Peter double 6 47,9 19.8
Michael ....
kann mir da einer mit einer select abfrage helfen oder ner möglichkeit das auf verscheidene abfragen im Datasetdesigner zu baun.
mfg Sebastian
<textarea style="width: 100%; height: 100%; position: absolute; top: 0; left: 0; right: 0; bottom: 0;"></textarea> <textarea style="width: 100%; height: 100%; position: absolute; top: 0; left: 0; right: 0; bottom: 0;"></textarea> <textarea style="width: 100%; height: 100%; position: absolute; top: 0; left: 0; right: 0; bottom: 0;"></textarea> <textarea style="width: 100%; height: 100%; position: absolute; top: 0; left: 0; right: 0; bottom: 0;"></textarea> <textarea style="width: 100%; height: 100%; position: absolute; top: 0; left: 0; right: 0; bottom: 0;"></textarea> <textarea style="width: 100%; height: 100%; position: absolute; top: 0; left: 0; right: 0; bottom: 0;"></textarea>
Antworten
-
Hallo Sebastian,
die SqlCE hat leider nur einen einschränkten Funktionsumfang (gegenüber dem MS SQL Server), da wird schwierig. Also, Häufigkeit und BestZeit sind noch einfach, da reicht ein einfaches GROUP BY aus. Bei "Datum" nehme ich mal an, das soll das Datum der BestZeit sein und das wird schwierig, den es werden keine SubSelects unterstützt, über die man das Datum zur BestZeit ermitteln könnte. Oder soll es die Bestzeit je Datum sein; dann bräuchste Du nur das Datum noch ins SELECT und GROUP BY einfügen.
SELECT F.SID
,F.Name
,Z.Modus
,COUNT(*) AS Haeufigkeit
,MIN(Z.Zeit) AS BestZeit
FROM Fahrer AS F
INNER JOIN
Zeit AS Z
ON F.SID = Z.FahrerSID
GROUP BY F.SID
,F.Name
,Z.Modus
Olaf Helper ----------- * cogito ergo sum * errare humanum est * quote erat demonstrandum * Wenn ich denke, ist das ein Fehler und das beweise ich täglich http://olafhelper.over-blog.de- Als Antwort markiert Sebastian-L Dienstag, 13. April 2010 11:40
Alle Antworten
-
Hallo Sebastian,
die SqlCE hat leider nur einen einschränkten Funktionsumfang (gegenüber dem MS SQL Server), da wird schwierig. Also, Häufigkeit und BestZeit sind noch einfach, da reicht ein einfaches GROUP BY aus. Bei "Datum" nehme ich mal an, das soll das Datum der BestZeit sein und das wird schwierig, den es werden keine SubSelects unterstützt, über die man das Datum zur BestZeit ermitteln könnte. Oder soll es die Bestzeit je Datum sein; dann bräuchste Du nur das Datum noch ins SELECT und GROUP BY einfügen.
SELECT F.SID
,F.Name
,Z.Modus
,COUNT(*) AS Haeufigkeit
,MIN(Z.Zeit) AS BestZeit
FROM Fahrer AS F
INNER JOIN
Zeit AS Z
ON F.SID = Z.FahrerSID
GROUP BY F.SID
,F.Name
,Z.Modus
Olaf Helper ----------- * cogito ergo sum * errare humanum est * quote erat demonstrandum * Wenn ich denke, ist das ein Fehler und das beweise ich täglich http://olafhelper.over-blog.de- Als Antwort markiert Sebastian-L Dienstag, 13. April 2010 11:40
-
Hi super,
echt super genau dass was ich wollte, das Datum zur Bestzeit wäre noch eine Sahnehaube gewesen aber das ist nicht so schlimm. Hab mich eigentlich schon mit weniger abgefunden da ich gelesen hab das sqlce da sehr eingeschränkt ist.
Vielen Dank
evtl. könntest du mir die Version mit datum zur bestzeit für den sql server geben
Vielleicht wird das auf mein bestreben hin in nächster zeit das ganze umgestellt, oder es ist in der nächsten version der sqlce verfügbar
Nochmals Vielen Dank
-
Mit einem SubSelect sehe das Ermitteln des Datums so aus:
SELECT SUB.*
,(SELECT MIN(ZZ.Datum)
FROM #Zeit AS ZZ
WHERE SUB.SID = ZZ.FahrerSID
AND SUB.Modus = ZZ.Modus
AND SUB.BestZeit = ZZ.Zeit
) AS Datum
FROM
(SELECT F.SID
,F.Name
,Z.Modus
,COUNT(*) AS Haeufigkeit
,MIN(Z.Zeit) AS BestZeit
FROM #Fahrer AS F
INNER JOIN
#Zeit AS Z
ON F.SID = Z.FahrerSID
GROUP BY F.SID
,F.Name
,Z.Modus
) AS SUB
Olaf Helper ----------- * cogito ergo sum * errare humanum est * quote erat demonstrandum * Wenn ich denke, ist das ein Fehler und das beweise ich täglich http://olafhelper.over-blog.de- Als Antwort vorgeschlagen Robert BreitenhoferModerator Dienstag, 13. April 2010 12:33