Ver Mensaje Individual
  #7 (permalink)  
Antiguo 09/06/2011, 21:56
Avatar de gnzsoloyo
gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 16 años, 5 meses
Puntos: 2658
Respuesta: Problema con una consulta anidada

El problema no es que sea complicado. Es que es algo medio aburrido (sin ofender), porque el inconveniente es que no pareces conocer cómo funciona el JOIN (o su equivalente: la coma).
Como es un tema repetitivo, que cada tanto aparece, y siempre tiene el mismo origen, no estimula contestarlo. Creo que todos quedamos esperando a que te des cuenta que deberías leer más sobre el tema de los JOIN, como te sugirió nicostone:
Cita:
Espero que sirva te aconsejo que leas un poco de JOIN son fáciles de usar y mejoran el rendimiento y se entienden mejor las consultas.
El asunto es así:
El JOIN hace de base una junta natural sobre los campos que lleven el mismo nombre, pero no discrimina los valores, sino que trata de igualar campos que tienen el mismo nombre. Si estos campos no representan el mismo dato, MySQL no lo sabe, lo hará lo mismo, y generará una combinación entre cada registro de la primera con cada uno de los de la segunda tabla. Como te imaginarás eso genera una multiplicación lógica.
Esa es la base de tu problema. Por ello se hacen con condiciones que indiquen qué campos se relacionan. En el estandar antiguo eso se ahcía en el WHERE; hoy no se recomienda y se aconseja usar JOIN ... ON ...
Por otro lado, tienes que entender que al hacer un JOIN con condiciones sobre uno o más campo, sólo devolverá aquellos donde se cumpla la condición, pero (y esto es importante), si la primera tabla se combina con varios registros de la segunda, los campos que provengan de la primera tabla se repetirán una vez por cada caso en que haya coincidencias en la segunda tabla.
En el contexto de tu caso eso significa que si la tabla Productos contiene
Cita:
Poleras de Algodón:
Poleras Rojas
Poleras Blancas
Poleras Amarillas
Esos se repetirán cada vez que haya un valor en la tabla Subproducto donde estén relacionados. Lo que no se repetirá es la combinación entre ambas tablas.
¿Se entiende? No existe la repetición si las columnas correspondientes a las egunda tabla no se repiten.

A no confundir...
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)