Hola:
Comentaros que con AND no se obtienen resultados y con OR se obtienen todos aquellos que tengan al menos uno de los idiomas, aunque para cada uno de ellos se obtiene un "registro".
Código Delphi
[-]
Aplicando OR se obtiene:
12436576 MARTINEZ MENDOZA JAVIER frances
12436576 MARTINEZ MENDOZA JAVIER ingles
12436576 MARTINEZ MENDOZA JAVIER arabe
23455454 LOPEZ ALEGRIA JUAN ingles
78957559 DURAN ...... ...... arabe
84878877 JIMENEZ OLMEDO MANUEL frances
84878877 JIMENEZ OLMEDO MANUEL ingles
84878877 JIMENEZ OLMEDO MANUEL arabe
Partiendo de esta consulta que he llamado "
busqueda" he creado con el asistente de Access otra que busque los duplicados.
Código SQL
[-]
SELECT First([maestro].[dni]) AS maestro_dniCampo, Count([maestro].[dni]) AS NúmeroDeDuplicados
FROM busqueda
GROUP BY [busqueda].maestro.dni
HAVING (((Count([maestro].[dni]))>2));
Con esta obtenemos los duplicados y modificandola para que sólo devuelva el dni puedo obtener el listado.
Código SQL
[-]
SELECT * FROM maestro
WHERE dni IN(SELECT First([maestro].[dni]) AS maestro_dniCampo FROM busqueda
GROUP BY [busqueda].personal.dni
HAVING (((Count([maestro].[dni]))>2)));
El problema ahora lo encuentro para sustituir en la última sentencia SQL
busqueda por la sentencia que ha generado la primera consulta.
Por último explicar que la sentencia pretendo generarla dinámicamente en función de los criterios seleccionado por el usuario.
Un Saludo.