Ver Mensaje Individual
  #1 (permalink)  
Antiguo 04/08/2011, 06:14
igg
 
Fecha de Ingreso: agosto-2011
Mensajes: 4
Antigüedad: 12 años, 9 meses
Puntos: 0
Consulta 1 a m

(el asunto sería Consulta n a m)
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.nombre
form Ta join Tr on Ta.id = Tr.idTa join Tb on Tr.idTb = Tb.id
where Ta.id in (select Ta.id
form Ta join Tr on Ta.id = Tr.idTa join Tb on Tr.idTb = Tb.id
where Tb.id = 23)
Esto devolvería pej:
  • 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

Última edición por igg; 04/08/2011 a las 06:29