Autore Topic: Join SQLite  (Letto 292 volte)

Offline C_G

  • Utente junior
  • **
  • Post: 69
  • Respect: 0
    • Mostra profilo
Join SQLite
« il: 21 Maggio 2014, 14:50:27 CEST »
0
Sono 2 giorni che provo ad uscirne. Devo prlevare dati da 3 tabelle e visualizzarli in una ListView.
Ora se nella tabella
Codice: [Seleziona]
Punteggi non ci sono record tutto funziona bene, altrimenti mi vengono mostrati valori sballati. Avete suggerimenti? Grazie

Codice: [Seleziona]
private void lista() {
    SQLiteDatabase db = mHelper.getReadableDatabase();
    final List<Dettaglio> dettagli = new ArrayList<Dettaglio>();
String sql = "SELECT a._id, a.name_play, a.saldo_play, a.data_play,
SUM(b.point1), SUM(b.point2), SUM(c.field1), SUM(c.field2), b.conto,
c.conto,
FROM Conti a LEFT JOIN Punteggi b ON (a.name_play  =  b.conto)
LEFT JOIN PrelieviPoints c ON (c.conto  =  a.nome_conto)
GROUP BY a.name_play";
Cursor cur = db.rawQuery(sql, null);
        while (cur.moveToNext()){
                    Dettaglio d = new Dettaglio();
                    d.id = cur.getString(0);
                    d. name_play = cur.getString(1);
                    d. saldo_play = cur.getDouble(2);
                    d. data_play = cur.getString(3);
                    d. point1 = cur.getDouble(4);
                    d. point2 = cur.getDouble(5);   
                    d.field1 = cur.getDouble(6);
            Log.d("", "check: "+d.field1);
                    d. field2 = cur.getDouble(7);
                    d. conto = cur.getString(8);
                    d. conto1 = cur.getString(9);

                    dettagli.add(d);
}
        cur.close();
        db.close();
« Ultima modifica: 21 Maggio 2014, 16:23:54 CEST da C_G »

Offline bradipao

  • Moderatore globale
  • Utente storico
  • *****
  • Post: 4043
  • keep it simple
  • Respect: +567
    • Github
    • Google+
    • bradipao
    • Mostra profilo
  • Dispositivo Android:
    Nexus 5
  • Play Store ID:
    Bradipao
  • Sistema operativo:
    W7
Re:Join SQLite
« Risposta #1 il: 21 Maggio 2014, 15:20:45 CEST »
0
Io ti consiglio di prelevare il database SQLite dal target (sia esso fisico o emulato), quindi aprirlo su un SQLiteManager (esempio l'addon per firefox) e provare la query.
NON rispondo a domande nei messaggi privati
Bradipao @ Play Store

Offline C_G

  • Utente junior
  • **
  • Post: 69
  • Respect: 0
    • Mostra profilo
Re:Join SQLite
« Risposta #2 il: 21 Maggio 2014, 15:26:18 CEST »
0
Mi sembra assurdo, con l'emulatore funziona tutto bene, invece con il telefono è sballato!
Cosa posso fare? se separo le query? visto che sono 3 tabelle come posso fare?

Ho preso il file .db, l'ho aperto con SQLiteMan, i dati al suo interno sono esatti.

A questo punto ho inserito un Log.d nel cursore e lì i dati sono sbagliati. Sembra che vengono mescolati con quelli di un'altra tabella

Post unito: [time]21 Maggio 2014, 17:36:44 CEST[/time]
Ho accertato che se nella tabella "Punteggi" non ci sono dati, tutto funziona bene. Altrimenti mi vengono restituiti valori completamente sbagliati.

Come posso fare per evitare questa cosa? il problema è nel secondo LEFT JOIN
« Ultima modifica: 21 Maggio 2014, 17:38:03 CEST da C_G »