Ho 3 tabelle:

1 - messaggi;
< id
< id_mittente
< id_destinatario
< testo

2 - messaggi_cancellati;
< id
< id_messaggio
< id_utente
< cancellato

3 - utenti;
< id
< nome

Le tabelle 1 e 2 sono legate messaggi.id ->messaggi_cancellati.id_messaggio

Nella tabella 3, il valore id lo posso ritorvare in messaggi.id_mittente
e messaggi.id_destinatario ed anche messaggi_cancellati.id_utente


Ora io dovrei estrarre dalla tabella messaggi, tutti i record che con le
seguenti caratteristiche:
1 - non figurano nella tabella messaggi_cancellati
2 - per i quali messaggi.id_mittente != messaggi_cancellati.id_utente
3 - per i quali messaggi.id_mittente = 'VALORENOTO'

Ho provato, senza successo con:

SELECT messaggi.*, messaggi_cancellati.*, utenti.*
FROM messaggi, messaggi_cancellati, utenti
WHERE messaggi.id NOT IN (select id_messaggio from messaggi_cancellati)
and messaggi.id_mittente = '3' ORDER BY messaggi.id desc";

La query deve anche contenere il campo utenti.id e utenti.nome per i
quali messaggi.id_destinatario = utenti.id

Come fare?