none
Komplexe abfrage in SqlCE RRS feed

  • 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>
    Montag, 12. April 2010 13:15

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
    Dienstag, 13. April 2010 10:32

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
    Dienstag, 13. April 2010 10:32
  • 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

    Dienstag, 13. April 2010 11:49
  • 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
    Dienstag, 13. April 2010 12:08