Cita: con las mismas tablas pero estas con motor MyISAM
En las tablas MyISAM no existen las FOREIGN KEY, por lo que las relaciones que crees haber establecido,
en realidad no existen.
Por cuestiones de compatibilidad de códigos, MySQL tolera que en un motor MyISAM invoques esas restricciones, pero para el caso nunca funcionan. En las MyISAM, la única forma de controlar la integridad referencial es por medio de código de la aplicación, o por medio de Stored Procedures o Triggers que hagan lo mismo.
Tu problema en este punto es simplemente detectar cuáles de los registros no están cumpliendo con la restricción y resolverlo (a mano).
Si el campo en cuestión permitía NULL, solamente habría que detectar eso. Si en cambio no lo admitía, pero el valor es incorrecto, entonces la cosa se hace de otro modo.
En el primer caso, la sentencia sería, mas o menos así:
Código SQL:
Ver originalSELECT id
FROM document
WHERE id_informant IS NULL;
En el segundo caso andaría por aquí:
Código SQL:
Ver originalSELECT T.id
FROM informant T LEFT JOIN document D ON T.id = d.id_informant
WHERE d.id_informant IS NULL;