1. Hast Du Lust, bei uns mitzuarbeiten und das AH-Team zu verstärken? Alle Details zu dieser aktuellen Herausforderung findest Du hier.
  1. MeGaBlitz, 06.09.2011 #1
    MeGaBlitz

    MeGaBlitz Threadstarter Junior Mitglied

    Hallo!

    Ich bin gerade an meiner ersten App am werkeln und ärgere mich ununterbrochen mit SQLite herum.

    Bin schon froh das ich es geschafft habe meine Tabellen zu erstellen und mit Werten zu befüllen. Was ich jetzt jedoch vermisse ist meine geliebte Oracle-Funktion rownum. Am Besten ich erkläre euch was genau ich will:

    Meine Tabelle:

    ID || wert || zahl
    1 || hallo || 0
    2 || wer || 1
    3 || hey || 0
    4 || moin || 1

    Nun: SELECT * FROM Tabelle WHERE zahl = 1;

    ID || wert || zahl
    2 || wer || 1
    4 || moin || 1

    Was ich nun gerne hätte wäre eine Rownum, also eine autoincrement ID des select-befehls (siehe Spalte rn)

    rn || ID || wert || zahl
    1 || 2 || wer || 1
    2 || 4 || moin || 1

    Aber wie erreiche ich so etwas? Ich hab jetzt ne Stunde herumgegooglet - ohne Ergebniss. Das Problem bei ROWID ist, dass er mir dabei 1:1 meine ID nimmt -.- Hat wer eine Idee?

    Danke im Vorraus!
     
  2. MeGaBlitz, 07.09.2011 #2
    MeGaBlitz

    MeGaBlitz Threadstarter Junior Mitglied

    Hmm nagut keine Ideen :/

    Was mir noch gekommen ist:
    CREATE TABLE tabelle2 AS SELECT * FROM tabelle WHERE WERT = 1;
    SELECT rowid, * FROM tabelle2

    --> Das würde klappen ist jedoch weit ungemütlicher zu realisieren. Weiters bräuchte ich dann ein CREATE OR REPLACE TABLE... was es in SQLite ebenfalls nicht zu geben scheint.

    Hmpf. Eine letzte Möglichkeit wäre dann eig. nur alles in Java zu realisieren und das wäre absolut ungemütlich und auch nicht sehr effizient.
     
  3. hannes1608, 07.09.2011 #3
    hannes1608

    hannes1608 Junior Mitglied

    MeGaBlitz gefällt das.
  4. surtic, 07.09.2011 #4
    surtic

    surtic Fortgeschrittenes Mitglied

    @MeGaBlitz: Kenn zwar nichts womit du dies machen willst, aber eine frage habe ich :) warum willst du denn noch eine Row Nummerierung? Wenn du die Daten holst hast du die doch sowieso irgend in einer List oder so.
     
  5. MeGaBlitz, 07.09.2011 #5
    MeGaBlitz

    MeGaBlitz Threadstarter Junior Mitglied

    @hannes: Danke, könnte tatsächlich funktionieren! Werde ich gleich mal an meiner App ausprobieren :D

    @surtic: Das Problem ist: Ich will mir nur einen Wert aus der Abfrage holen.
    Genauer gesagt:

    --> Ich hol mir eine Liste bei der die zahl 1 ist --> sehe nach wieviele Werte ich bekomme (ANZ) --> Per Zufall wird einer dieser Werte ausgelesen.
    (BSP: Ich bekomme 15 Werte --> random ergibt 12 --> Lies den zwölften Wert aus)

    Das scheint bei Limit zu funktionieren da Limit tatsächlich auf die Row Nummerierung zugreift. Zumindest an meiner Testdatenbank funktioniert das tadellos :D
     
  6. Tom299, 08.09.2011 #6
    Tom299

    Tom299 Android-Experte

    hmm, so richtig hab ich es zwar noch nicht kapiert, aber wenn du zufalls-zeilen aus der DB willst geht das einfach so:

    SELECT * FROM table ORDER BY RANDOM() LIMIT 1;

    willst du mehrere zufalls-zeilen einfach Limit erhöhen. in postgres funktioniert glaub ich sogar die gleiche syntax, in mysql heißt es glaub rand()
     
    MeGaBlitz gefällt das.
  7. surtic, 08.09.2011 #7
    surtic

    surtic Fortgeschrittenes Mitglied

    @MeGaBlitz: Ah so :) aber auch dann brauchst du doch gar nicht zu wissen welche Zeilen Nummer es ist. Für etwas hat man einen Count und kann es mit dem Index holen.

    Und die Lösung von Tom ist sicher Top :) vor allem wird es gleich von SQL gelöst und du musst nichts in Java machen.
     
  8. MeGaBlitz, 08.09.2011 #8
    MeGaBlitz

    MeGaBlitz Threadstarter Junior Mitglied

    Wohooo top lösung :D Danke.

    Meine App funktioniert auch schon... Also, zumindest am Emulator ^^

    Danke euch Allen für die schnelle Hilfe!
     
Die Seite wird geladen...
Ähnliche Themen Forum Datum
[OFFEN] Komplette SQLite Datenbank verschlüsseln Android App Entwicklung Dienstag um 12:02 Uhr
[OFFEN] SQLITE insert gibt negative id zurück Android App Entwicklung Montag um 21:16 Uhr
[ERLEDIGT] In SQLite DB auf nächsten/vorherigen Datensatz zugreifen Android App Entwicklung 23.03.2017
SQLite asynchron benutzen Android App Entwicklung 26.02.2017
SQLite - Idee 'zentrale Datenbank' theoretisch möglich (und ratsam)? Android App Entwicklung 21.02.2017
SQLite Datenbank. Was ist möglich und was nicht? Android App Entwicklung 15.11.2016
SQLite auslesen und in Tabelle darstellen Android App Entwicklung 12.10.2016
SQLite Datenbank updaten Android App Entwicklung 10.10.2016

Users found this page by searching for:

  1. sqlite select numerieren

    ,
  2. sqlite select rowid

    ,
  3. sqlite rowid

Du betrachtest das Thema "SQLite und ROWNUM?" im Forum "Android App Entwicklung",