Foros del Web » Programación para mayores de 30 ;) » Bases de Datos General » Mysql »

Subconsultas

Estas en el tema de Subconsultas en el foro de Mysql en Foros del Web. No entiendo como funcionan las subconsultas. A veces veo consultas con 2 o 3 subconsultas, y no las entiendo. Alguien me puede explicar como funcionan, ...
  #1 (permalink)  
Antiguo 26/09/2006, 21:46
 
Fecha de Ingreso: diciembre-2005
Mensajes: 354
Antigüedad: 18 años, 10 meses
Puntos: 0
Subconsultas

No entiendo como funcionan las subconsultas.

A veces veo consultas con 2 o 3 subconsultas, y no las entiendo.

Alguien me puede explicar como funcionan, que beneficio tienen, y dar ejemplos de consutlas con una y mas subconsultas?

Gracias!
  #2 (permalink)  
Antiguo 27/09/2006, 04:57
Avatar de Lord of freaks  
Fecha de Ingreso: octubre-2004
Ubicación: Madrid
Mensajes: 334
Antigüedad: 20 años, 1 mes
Puntos: 2
mira por ejemplo:

Esta consulta extrae los datos de los alumnos que sacarón más de un 5 en el examen la estructura de las tablas sería la sigueinte

ALUMNOS

id
nombre
apellidos

EXAMEN

id
id_alumno
nota
Código PHP:

SELECT 
FROM alumnos WHERE id IN (
SELECT id_alumno FROM examen WHERE nota 

Espero que te ayude, la ventaja está en que no tienes que realizar 2 consultas sino que con una sóla obtienes los datos que quieres.

Un saludo
__________________
Una vez un elemental de rayos mató una tribu entera de tritones.

¡¡ El sólo quería darse un baño !!

http://www.frikilandia.com

Neither Fu Nor Fa
  #3 (permalink)  
Antiguo 28/09/2006, 12:40
 
Fecha de Ingreso: diciembre-2005
Mensajes: 354
Antigüedad: 18 años, 10 meses
Puntos: 0
que diferencia hay de hacerlo con un inner join?

SELECT * FROM alumnos INNER JOIN examen ON alumnos.id_alumno = examen.id_alumno WHERE examen.nota > 5

Gracias
  #4 (permalink)  
Antiguo 28/09/2006, 15:34
Avatar de deadlykyo  
Fecha de Ingreso: noviembre-2005
Ubicación: Cbba - Bolivia
Mensajes: 747
Antigüedad: 19 años
Puntos: 5
La diferencia se centra en el rendimiento de la consulta, si no haces uso de algun join (inner, natural, left, outer...) lo que hace el manejador de mysql es hacer un producto cartesiano entre las tablas y luego recien despues de eso ira descartando segun la condicion que este en el WHERE, pero si usas join lo primero sera emparejar los datos que correspondan em ambas tablas y no hara el producto cartesiano que puede resultar muy grande tomando en cuenta la cantidad de datos que se manejen en las tablas, es por eso que se tiene mejor rendimiento y tiempo de respuesta en una consulta con join que sin ella (Claro notaras la diferencia si trabajas con grandes cantidades de registros), saludos
cya
__________________
"El Conocimiento es de todos, no solo de algunos"
  #5 (permalink)  
Antiguo 29/09/2006, 07:07
 
Fecha de Ingreso: diciembre-2005
Mensajes: 354
Antigüedad: 18 años, 10 meses
Puntos: 0
entonces, hacerlo mediante inners es mucho mas eficiente entiendo,... no?
  #6 (permalink)  
Antiguo 29/09/2006, 07:49
Avatar de deadlykyo  
Fecha de Ingreso: noviembre-2005
Ubicación: Cbba - Bolivia
Mensajes: 747
Antigüedad: 19 años
Puntos: 5
Correcto, la diferencia no es notoria si manejas tablas con pocos registros, pero a medida que va creciendo se va notando la diferencia en el tiempo de respuesta, ahora mas adelante tal vez te topes con la necesidad de usar otro tipos de join que no sea inner join, como el left join o el right join, siempre es bueno echarle un vistazo para ver que hace,
saludos, cya
__________________
"El Conocimiento es de todos, no solo de algunos"
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 14:03.