Buonasera a tutti, è da un paio d'ore che mi sto divertendo a bestemmiare contro sqlite, e lui simpaticamente sembra apprezzare il gioco: tuttora non vuol saperne di restituire dei risultati corretti (risultati che invece mysql restituisce).
Allora, il problema è estremamente semplice (o meglio, dopo due ore lo è diventato, avendo capito il problema dov'è ed avendo semplificato l'orrida query).
In pratica ho una tabella così strutturata:
CREATE TABLE `case` (
`nome_casa` text NOT NULL,
`id_schiera` int(11) NOT NULL,
`id_casa` int(11) NOT NULL,
PRIMARY KEY (`id_casa`,`id_schiera`)
);
e questi valori inseriti:
INSERT INTO "case" VALUES('Alessia',11,40);
INSERT INTO "case" VALUES('Barbara',13,41);
INSERT INTO "case" VALUES('Claudia',13,42);
INSERT INTO "case" VALUES('Daniela',11,43);
INSERT INTO "case" VALUES('Elvezia',12,44);
Adesso succede che ho 2 case nella schiera 13 (la 41 e la 42), due nella 11 (la 40 e la 43) ed una sola nella 12.
Cosa voglio ottenere? Voglio semplicemente fare una query che mi indichi l'id della prima casa della schiera.
Quindi io facilmente facendo
SELECT id_casa FROM case GROUP BY id_schiera ORDER BY id_casa ASC;
mi aspetto di ottenere il giusto risultato. No, ovviamente mi viene mostrato il risultato maggiore, e non il primo (i risultati sono 42, 43, 44). Okay, forse qualcosa non va (e non mi meraviglierei così tanto), allora provo DESC anzichè ASC. Ottengo chiaramente 44, 43, 42. Ovvio. Allora provo diversamente:
SELECT DISTINCT(id_schiera), id_casa FROM case;
E quindi ottengo
11|40
13|41
13|42
11|43
12|44
Quindi non ha distinto un beneamato ahem... già.
Se faccio SELECT DISTINCT(id_schiera) FROM case ORDER BY id_casa ASC; invece funziona, ma ovviamente, non avendo l'id della casa... non è poi un grosso guadagno.
IDEE?![]()