On 2014-10-16 15:55, Alberto Granzotto wrote:
Chiedo venia, avrei potuto risparmiarti una mail, non avevo capito il
funzionamento del GROUP BY nella query, ci sono arrivato dopo che GROUP BY
1, 2 è equivalente a GROUP BY u.id, u.name :)

Grazie per tutte le indicazioni, ora che mi hai mostrato che a) si può fare
b) come si fa ho tutte le informazioni necessarie per divertirmi!

Buon divertimento, fammi sapere: mi incuriosisce sempre quando qualcuno usa psycopg in maniera un po' piu' spinta.

N.B. nella query che abbiamo discusso, se un utente non ha nessuna email, viene restituita una cosa un po' bruttina: una lista con un'email con tutti i campi a null, almeno giudicando il risultato:

    test=> insert into users (name) values ('foo');
    INSERT 0 1
test=> select u.id, u.name, array_agg((e.id, e.email)::t_email) from users u left join emails e on u.id = e.user_id group by 1,2;
     id |  name   |                        array_agg
----+---------+---------------------------------------------------------- 1 | alberto | {"(1,albe...@example.org)","(2,albe...@lemonparty.org)"}
      2 | daniele | {"(4,piro@officine)","(5,piro@develer)"}
      3 | foo     | {"(,)"}

Sei in grado di modificare la query in maniera da restituire un array vuoto se un utente non ha nessuna email (che psycopg convertirebbe in una lista vuota)?

-- Daniele
_______________________________________________
Python mailing list
Python@lists.python.it
http://lists.python.it/mailman/listinfo/python

Rispondere a