Hola,
A ver si me explico bien:
Tengo 2 tablas (Ta y Tb) con una relación n a m y quiero obtener todos los datos tanto de Ta como de Tb, al poner un criterio de búsqueda sobre Tb lógicamente me devuelve los datos de Ta y Tb que cumplen ese criterio, pero lo que yo quiero son también el resto de datos de Tb que tienen relación con los devueltos de Ta.
Se que se puede hacer con una subquery que obtenga los id's de Ta con ese criterio y una select con todos (Ta y Tb) con un in de los id's de la subquery, pero tengo el problema del número de resultados de la subquery que puede ser muy alto y ralentizarme la consulta. ¿Se podría hacer de otra forma?
Voy a poner un ejemplo con la solución que conozco pero que no me gusta para ver si queda más claro:
select Ta.id, Ta.nombre, Tb.id, Tb.nombreEsto devolvería pej:
form Ta join Tr on Ta.id = Tr.idTa join Tb on Tr.idTb = Tb.id
where Ta.id in (select Ta.idform Ta join Tr on Ta.id = Tr.idTa join Tb on Tr.idTb = Tb.id
where Tb.id = 23)
- 1 Nombre1 23 Nombre23
- 1 Nombre1 24 Nombre24
- 3 Nombre3 23 Nombre23
- 3 Nombre3 25 Nombre25
- 3 Nombre3 27 Nombre27
- 8 Nombre8 23 Nombre23
Espero que entendáis lo que intento preguntar, muchas gracias