umm vabbe' alla fine ho risolto senza sql
ho caricato praticamente tutto il db negli oggetti ...
dovro' vedere quanto diventa pesante in futuro perche' con il db da testing che sto usando ora con una 30ina di entry posso far tutte le porcate che voglio e non noto mai niente 
(sto facendo 1 applicazione per android quindi cercavo di ottimizzare... ma credo che non si possa fare tanto semplicemente e il libro di sql l'ho prestato ad 1 mio amico e non l'ho + rivisto :P)
cmq l'and del join era un WHERE
facendo varie prove e' diventato un AND e quando ho incollato qui non me ne sono accorto 
cmq a titolo informativo piero con il tuo modo non funziona perche' parti dal presupposto che le date ci siano tutte
il problema non sono le date ... sono le quantita' che non sono sempre per tutte le date
come ho postato sul 2° post sull'id 44 non c'e' la quantity del giorno 2011-05-08 di conseguenza quando vai a far la query ti perdi alcuni dati ed essendo mischiati non sai manco + quali sono
in java ho "risolto" in questo modo
codice:
sql = "SELECT * FROM db WHERE date ">= ? ORDER BY date DESC, id;
c = mDb.rawQuery(sql, new String[] { getDaysBefore(dayNumber) }); //getdaysbefore(x) prende la lista dei giorni e vede qual'e' l'x-esimo giorno ... questo per diminuire un po il carico
id_col = c.getColumnIndex("id");
quantity_col = c
.getColumnIndex("quantity");
int i = 0;
while (c.moveToNext()) { //<-- iteratore
id = c.getInt(id_col) - 1;
if (i > id) {
while (i < map.size()) {
map.get(i).getQuantityList().add(0);
i++;
}
i = 0;
}
while (id > i) {
map.get(i).getQuantityList().add(0);
i++;
}
i++;
map.get(id).getQuantityList().add(c.getInt(quantity_col));
}
while (i < map.size()) {
map.get(i).getQuantityList().add(0);
i++;
}
la mappa e' del tipo <int id, obj> e l'ho precostruita con una query precedente in cui associo gli id ad altra roba