non e' che si capisca poi granche' (che sono le tecniche?) ma hai un AND/OR nel where che potrebbe necessitare di una parentesi per dare le corrette priorita'.

codice:
WHERE comunicazioni.id_tecniche = $_SESSION[idtecniche] 
AND 
(comunicazioni.id_tecniche = a_tecniche.id_tecniche OR comunicazioni.id_tecniche = 0  )
ma e' in assoluto un tentativo perche', ripeto, non si capisce molto chi e' tecniche e cosa lo contraddistingue. In pratica l'alternativa OR deve essere tra parentesi oppure diventerebbe:

codice:
WHERE (comunicazioni.id_tecniche = $_SESSION[idtecniche] AND comunicazioni.id_tecniche = a_tecniche.id_tecniche)
OR comunicazioni.id_tecniche = 0
con un significato ben differente.