Hola mortiprogramador:
Cuando haces una comparación tipo IN con una subconsulta, NO ES NECESARIO QUE UTILICES LA FUNCIÓN DE AGRUPACIÓN GROUP_CONCAT, simplemente tienes que hacer que la subconsulta te regrese como un conjunto te registros TODOS LOS ID'S QUE QUIERES COMPARARAR:
Va un ejemplo para ver si queda más claro:
imagina que tienes estas dos tablas;
Código MySQL:
Ver original+------+-------------+
| id | descripcion |
+------+-------------+
| 1 | uno |
| 1 | one |
| 1 | un |
| 2 | dos |
| 2 | two |
| 2 | deux |
+------+-------------+
+------+-------------+
| id | descripcion |
+------+-------------+
| 1 | uno |
| 2 | dos |
+------+-------------+
Supongamos que quieres extraer de la tabla A sólo las descripciones en español (uno y dos), esto lo puedes hacer de dos formas:
1. con la sentencia IN listando todos los valores separados por comas;
Código MySQL:
Ver original -> WHERE descripcion
in ('uno', 'dos'); +------+-------------+
| id | descripcion |
+------+-------------+
| 1 | uno |
| 2 | dos |
+------+-------------+
2. con una SUBCONSULTA a la tabla B:
Código MySQL:
Ver original -> );
+------+-------------+
| id | descripcion |
+------+-------------+
| 1 | uno |
| 2 | dos |
+------+-------------+
OBSERVA que en la subconsulta NO ESTOY UTILIZANDO EL GROUP_CONCAT:
Código MySQL:
Ver original+-------------+
| descripcion |
+-------------+
| uno |
| dos |
+-------------+
¿Se entiende? Lo único que debes de asegurarte es que la subconsulta te regrese UNA SOLA COLUMNA.
Haz la prueba y nos comentas.
Saludos
Leo.