Ademas creo que la sentencia esta mal, te falta decirle a que tabla corresponden esos campos, seria asi, creo:
"select DNI.tabla from cliente, datos where dni.tabla=DNI.tabla and dni.tabla not in (select DNI from datos where fecha='$fecha')";# sustituyendo tabla por la tabla a la que pertenece el campo
Si lo que te pasaba era esto te saldria un error parecido a este <i>Column: 'nombre_campo' in field list is ambiguous</i>
Creo que asi si funcionaria, si te lo permite el mysql.
Si no puedes actualizar el mysql mirate estos link:
http://dev.mysql.com/doc/mysql/en/re...ubqueries.html http://dev.mysql.com/doc/mysql/en/an...ubqueries.html
Suerte