Anzahl Items aus SQLite-Abfrage

  • Hallo zusammen,

    leider kenne ich mich mit sql nicht so gut aus, aber folgendes will ich erreichen. ich möchte wissen, wieviele items ich als ergebnis in einer sql-abfrage habe. zusätzlich würde ich gerne für die items, die ich abfrage, eine summe der spalte SIZE machen.

    die abfragen sind soweit recht simpel, bsp:

    Zitat

    Select Title, Rowid From DB Where (Comment LIKE '%Serie%') Order by Title

    da ich auch immer probleme habe, die rückgabe korrekt abzufangen, zeig ich direkt mal, wie das script weiter arbeitet ;)

    der sql-befehl steht in einer ini, den ich vorher auslese (anhand des button-names, den ich drücke). danach wird die liste der Titles und RowIDs in ein ListView übergeben. Die Anzahl der Einträge sowie die Summe von Size möchte ich in eine InputBox schreiben.

    [autoit]

    $iniRead = IniRead($ini, "Show", $Button, "")
    _SQLite_Exec(-1, $iniRead, "_InsertTitle")

    [/autoit][autoit][/autoit][autoit]

    Func _InsertTitle($aRow)
    Local $index = -1, $subItem = 0
    For $s In $aRow
    If $s = "rowid" Then Return
    If $index = -1 Then
    $index = _GUICtrlListView_AddItem($List1, $s)
    Else
    $subItem += 1
    _GUICtrlListView_AddSubItem($List1, $index, $s, $subItem)
    EndIf
    Next
    EndFunc ;==>_InsertTitle

    [/autoit]

    bis jetzt habe ich die anzahl aus dem listview ausgelesen, aber das geht ja leider erst, wenn alle einträge schon gepostet sind, sind erscheint dies erst als letztes, was mich etwas stört.

    besten dank schonmal.

  • Als reines SQL-Statement kannst du ein

    SQL
    SELECT Count(*) FROM db WHERE (Comment LIKE '%Serie%');

    nutzen, um die Anzahl der gesuchten DB-Einträge zu ermitteln.

    In AutoIt sähe das dann so aus:

    [autoit]

    _SQLite_Query(-1, "SELECT Count(*) FROM db WHERE (Comment LIKE '%Serie%');", $hQry)
    _SQLite_FetchData($hQry, $aRow)

    [/autoit]

    Danach steht in $aRow[0] die Anzahl der gefundenen Datensätze.

    Wahrscheinlich gibt es eine elegantere Lösung, aber dies ist mir so "auf die Schnelle" eingefallen.

    Gruß
    Benne

  • Du kannst erst die kompletten Daten per _SQLite_GetTable2d in ein Array einlesen. Damit bekommst du die Anzahl der Einträge und ein 2D-Array mit allen Einträgen.

  • Du kannst erst die kompletten Daten per _SQLite_GetTable2d in ein Array einlesen. Damit bekommst du die Anzahl der Einträge und ein 2D-Array mit allen Einträgen.


    Ich wusste doch, dass es auch eleganter geht :D

  • schonmal besten dank für eure vorschläge. beides ist gut ... aber auch irgendwie §%$()=§

    ich versuch mich grad an der 2DTable. Wenn ich nur Spalten abrufe (Title, RowID, Size), habe ich alle Infos, die ich brauche, ... theoretisch. Ich müsste aber natürlich noch Size summieren. Aber wie?

    Schöner fände ich noch die Lösung, [Count(*) und] Sum(Size) als einzelne Werte in der gleichen Abfrage aufzurufen, aber dann wird das Array immer nur 1 Zeile lang.

    Zitat

    $iRval = _SQLite_GetTable2d (-1, "Select Sum(a.Size) As SUMME, Count(a.oid) As ITEMS, a.title, a.oid from DB a, DB b where (a.title = b.title and a.oid <> b.oid) Order by a.title;", $aResult, $iRows, $iColumns)

    Und 2 oder sogar 3x die gleiche Abfrage zu machen, nur um dann jeweils 1 Ergebnis zu bekommen, dauert mir zu lange.

    Gibts noch Hilfe für mein Vorhaben *g* ???