Scusa per il ritardo nel risponderti!
Comunque abbi pazienza, sono abbastanza negato con sql
E' circa giusto, quello che però vorrei ottenere sono tutti i clienti:

'elencami nome e cognome dei clienti che non appartengono ai seguenti gruppi {lista dei gruppi da escludere}'

Seguendo un po' il tuo esempio, ho provato così:
codice:
SELECT DISTINCT customer.nome, customer.cognome,groups.titolo, groups.id
FROM customer
JOIN customer_group
ON customer_group.customer_id = customer.id
JOIN groups
ON groups.id = customer_group.group_id
WHERE groups.id NOT IN(1, 2, 3, 4, etc. )
Ma è sbagliata perchè con questa query i nomi si ripetono per ogni gruppo di appartenenza (se ho un customer con 10 gruppi associati, vedrò 10 volte il nome di quel customer..)
Come potrei fare?