Android SQLite-Abfrageauftragsproblem

8

Wie kann ich eine Datenbank abfragen, um eine Tabelle mit Daten mit zwei verschiedenen IDs anzuzeigen, aber jede ID pro Zeile wechseln und dennoch nach Zeit sortieren? Beispielsweise. Datenbank hat 10 Elemente von ID1 und 10 Elemente von ID2.

Ich muss es sein:

%Vor%

Irgendwelche Ideen?

UPDATE: Die Anzahl der IDs muss von eins bis n verschieden sein und ich versuche auch, dies über die SQLite.query () -Methode zu tun.

UPDATE 2: Die # Daten repräsentieren Spalten von Daten in dieser Zeile, nicht nur eine, so könnte es zum Beispiel 5 Spalten geben. Außerdem müssen die Daten über einen Cursor zurückgegeben werden.

UPDATE 3: Weitere Ausführungen, unten sind eine Tabelle und ein erwartetes Ergebnis, das ich erreichen möchte.

Die Eingabetabelle (nach Uhrzeit sortiert) ..

%Vor%

Und die Ausgabe: Notiz, ich muss die IDs innerhalb der Datenbank wechseln, wo es möglich ist, und trotzdem das Ganze nach Zeit sortieren, zum Beispiel:

%Vor%

UPDATE 4: Bevorzugen Sie eine sehr einfache Lösung wie eine komplexe, aber saubere SQL-Abfrage usw. UPDATE 5: Trotz der Tatsache, dass das Kopfgeld weggegeben werden muss, wurde diese Frage immer noch nicht mit einer einfachen Lösung beantwortet, um das zu tun, was ich wünsche.

    
rennoDeniro 20.02.2013, 20:14
quelle

6 Antworten

2
%Vor%

Ich hoffe, ich habe Ihre Frage richtig verstanden.

Ausgabe für zufällige Daten:

%Vor%

Vergessen Sie nicht, Indizes zu verwenden.

    
pawelzieba 25.02.2013 22:43
quelle
1

Versuchen Sie Folgendes:
 1. Erstellen Sie SELECT-Anweisungen für beide Mengen (Artikel mit ID1 und Artikel mit ID2)  2. Verwenden Sie ORDER BY innerhalb dieser Anweisungen für die Zeit / IDx-Bestellung  3. Fügen Sie eine Spalte hinzu

%Vor%
 4. füge Listenbezeichner für beide Sets hinzu  5. Verwende eine UNION, um beide Ergebnismengen zu vereinen  6. wähle aus dieser vereinigten Liste aus und setze ein Feld zusammen, das als (rownum || set identifier) ​​erstellt wurde  7. Füge ein ORDER BY-Feld zum gesamten Ausdruck hinzu.

Update: Das war eher für zwei Tabellen gedacht; nachdem ich mir die obigen Beispiel-Updates angeschaut und einige Dinge versucht habe, ist es ziemlich schwierig, das in einem einzigen SQL (mit SQLite) zu programmieren

    
Trinimon 20.02.2013 20:47
quelle
0

etwas wie:

%Vor%

[edit: mein Fehler - nicht verfügbar in SQLite]

    
bwperrin 20.02.2013 20:23
quelle
0

Die einzige Lösung, die ich gefunden habe, dass Sie zwei Abfragen durchführen

Erste Abfrage nach den Daten sortiert nach ID und Datum

%Vor%

Und dann fragen Sie die verschiedenen IDs, die Sie haben, speichern Sie es in einem Array, nennen wir es idsArray

%Vor%

Lies alle Ergebnisse der ersten Anfrage in eine Queue: Pseudocode:

%Vor%     
RMalke 20.02.2013 21:00
quelle
0

Diese Abfrage funktioniert, wenn die gleiche ID möglicherweise nicht die gleiche Zeit haben kann.

%Vor%

rownumber calc von Höflichkeit

Ich versuche nur, jeder Zeile in der Tabelle einen Gewichtungsfaktor zuzuweisen.

    
Tony Shih 01.03.2013 01:57
quelle
0

Ihre Daten scheinen sehr schlecht organisiert zu sein. Wenn Sie mehrere Tabellen scheinbar identischer Daten haben, die sich nur im Typ unterscheiden, sollten die Daten stattdessen in einer Tabelle mit einer Typspalte gespeichert werden.

Betrachten Sie das Einchecken von Tabellen (id, user, datetime) und das Auschecken von Tabellen (id, user, datetime), die mit checkinout (id, user, datetime, inorout) zusammengeführt werden könnten.

Wenn die Daten optimal strukturiert sind, werden die zu bearbeitenden Abfragen viel einfacher zu gestalten sein.

Siehe auch jedes Tutorial zur Normalisierung oder Ссылка

    
mikebabcock 01.03.2013 20:42
quelle

Tags und Links