SELECT COUNT(*) ?

  • Hallo,


    Ich möchte die Anzahl der Einträge zählen, die eine SQL Bedingung erfüllen, aber meine SQL Query (über WebDAV Search) funktioniert mit einer COUNT Abfrage nicht.


    Beispiel:


    SEARCH /public/Kalender/ HTTP/1.0
    Host: Mein_Host
    Authorization: ....
    Content-type: text/xml
    Depth: 1
    Range: rows=0-1
    Content-Length: 557


    <?xml version='1.0'?><d:searchrequest xmlns:d="DAV:"><d:SQL>SELECT COUNT(*) AS "cnt" FROM "/public/Kalender/" WHERE ( "urn:schemas:calendar:dtstart" < '2006/07/18 00:00:00' AND "urn:schemas:calendar:dtend" > '2006/07/18 00:00:00' OR "urn:schemas:calendar:dtstart" < '2006/07/20 00:00:00' AND "urn:schemas:calendar:dtend" > '2006/07/20 00:00:00' OR "urn:schemas:calendar:dtstart" > '2006/07/18 00:00:00' AND "urn:schemas:calendar:dtend" < '2006/07/20 00:00:00' ) ORDER BY "urn:schemas:calendar:dtstart" ASC </d:SQL></d:searchrequest>



    Zurück bekomme ich dabei immer "Ungültige Anforderung".


    Ein SELECT * hingegen funktioniert ohne Probleme.


    Was mache ich falsch ?


    Danke im Voraus!

  • So ich glaube ich habe es selber anhand msdn rausgefunden:


    SELECT "DAV:visiblecount" FROM ... WHERE ... GROUP BY "DAV:contentclass"


    liefert das dann im ersten Wert des Resultsets die Anzahl zurück. Der 2. Wert ist 404 - aber das ignoriere ich mal:

    XML
    <?xml version="1.0"?>
    <a:multistatus xmlns:b="urn:uuid:c2f41010-65b3-11d1-a29f-00aa00c14882/" xmlns:c="xml:" xmlns:a="DAV:">
    <a:contentrange>0-0</a:contentrange><a:response>
    <a:propstat><a:status>HTTP/1.1 200 OK</a:status>
    <a:prop><a:visiblecount b:dt="int">7</a:visiblecount></a:prop>
    </a:propstat>
    <a:propstat><a:status>HTTP/1.1 404 Resource Not Found</a:status><a:prop><a:href/></a:prop></a:propstat></a:response></a:multistatus>


    Noch eine Anmerkung zu meinem Post oben: < und > müssen in HTML-Entities - die ich hier nicht editieren kann - also & l t ; gesetzt werden. Das findet man dann wirklich sehr schwer, wen nes nicht funktioniert.



    Hier der Link: MSDN Getting Item Counts with GROUP BY