Estoy construyendo una aplicación que genera dinámicamente sql para buscar filas de una Tabla particular (esta es la clase de dominio principal, como un Empleado).Obteniendo filas distintas de una combinación externa izquierda
Hay tres tablas Table1, Table2 y Table1Table2Map. Table1 tiene una relación muchos a muchos con Table2, y se asigna a través de la tabla Table1Table2Map. Pero como Table1 es mi mesa principal, la relación es virtualmente como una a muchas.
Mi aplicación genera un sql que básicamente da un conjunto de resultados que contiene filas de todas estas tablas. La cláusula de selección y las uniones no cambian, mientras que la cláusula where se genera en función de la interacción del usuario. En cualquier caso, no quiero filas duplicadas de Table1 en mi conjunto de resultados, ya que es la tabla principal para la visualización de resultados. En este momento la consulta que está siendo generada es así:
select distinct Table1.Id as Id, Table1.Name, Table2.Description from Table1
left outer join Table1Table2Map on (Table1Table2Map.Table1Id = Table1.Id)
left outer join Table2 on (Table2.Id = Table1Table2Map.Table2Id)
Para simplificar he excluido la cláusula where. El problema es cuando hay varias filas en Table2 para Table1 aunque he dicho distinto de Table1.Id el conjunto de resultados tiene filas duplicadas de Table1, ya que tiene que seleccionar todas las filas coincidentes en Table2.
Para obtener más información, considere que para una fila en la Tabla 1 con Id = 1 hay dos filas en Table1Table2Map (1, 1) y (1, 2) que mapean Table1 a dos filas en Table2 con ids 1, 2. la consulta mencionada anteriormente devuelve filas duplicadas para este caso. Ahora quiero que la consulta devuelva la fila de Table1 con Id 1 solo una vez. Esto se debe a que solo hay una fila en Table2 que es como un valor activo para la entrada correspondiente en Table1 (esta información se encuentra en la tabla de asignación). ¿Hay alguna manera de evitar filas duplicadas de Table1?
Creo que hay un problema básico en la forma en que trato de resolver el problema, pero no puedo averiguar de qué se trata. Gracias por adelantado.
¿Cómo distingue qué fila está "activa" en la Tabla2? – Sung