Foros del Web » Programando para Internet » ASP Clásico »

Consulta SQL de 3 tablas

Estas en el tema de Consulta SQL de 3 tablas en el foro de ASP Clásico en Foros del Web. Hola, estoy intentando hacer un select con estas condiciones: Tengo 3 tablas: Eventos EventoID User_ID Eventos_Detalles Evento_DetallesID EventoID Usuarios User_ID Email El único dato que ...
  #1 (permalink)  
Antiguo 03/08/2005, 09:59
 
Fecha de Ingreso: mayo-2005
Mensajes: 31
Antigüedad: 19 años
Puntos: 0
Consulta SQL de 3 tablas

Hola, estoy intentando hacer un select con estas condiciones:

Tengo 3 tablas:

Eventos
EventoID
User_ID

Eventos_Detalles
Evento_DetallesID
EventoID

Usuarios
User_ID
Email


El único dato que tengo es una variable que es el Evento_DetallesID, pero el dato que necesito extraer es el email de la tabla Usuarios. Entonces hago algo así:

SELECT Usuarios.Email FROM ((Usuarios LEFT JOIN Usuarios ON Usuarios.User_ID=Eventos.User_ID) LEFT JOIN Eventos_Detalles ON Eventos_Detalles.EventoID = Eventos.EventoID ) AND Eventos_Detalles.Eventos_DetallesID=2481

Pero no me arroja ningún resultado. Es una base de datos MySQL y el código ASP

Gracias de antemano a quien me pueda ayudar
  #2 (permalink)  
Antiguo 03/08/2005, 10:34
Avatar de u_goldman
Moderador
 
Fecha de Ingreso: enero-2002
Mensajes: 8.031
Antigüedad: 22 años, 5 meses
Puntos: 98
Trata uniendo las 3 tablas con un INNER JOIN en lugar de left join:

Código:
SELECT a.email FROM usuarios a INNER JOIN eventos b on a.user_id = b.user_id INNER JOIN eventos_detalles c ON c.eventoid = b.eventoid WHERE c.evento_detallesID = 2481
Salu2,
__________________
"El hombre que ha empezado a vivir seriamente por dentro, empieza a vivir más sencillamente por fuera."
-- Ernest Hemingway
  #3 (permalink)  
Antiguo 03/08/2005, 10:35
Avatar de verinchi  
Fecha de Ingreso: septiembre-2004
Ubicación: Buenos Aires
Mensajes: 647
Antigüedad: 19 años, 8 meses
Puntos: 2
Hola Pedro_M!
El tema es que estás haciendo el left join sobre la misma tabla usuarios cuando deberías hacerla sobre eventos. Sería algo así:
Código:
 
SELECT Usuarios.Email FROM ((Usuarios LEFT JOIN Eventos ON Usuarios.User_ID=Eventos.User_ID) LEFT JOIN Eventos_Detalles ON Eventos_Detalles.EventoID = Eventos.EventoID ) AND Eventos_Detalles.Eventos_DetallesID=2481
Con esto ya te debería funcionar.
__________________
Why can't we not be sober?
www.partitorium.com.ar
  #4 (permalink)  
Antiguo 03/08/2005, 11:58
 
Fecha de Ingreso: marzo-2005
Mensajes: 1.418
Antigüedad: 19 años, 2 meses
Puntos: 9
Disculpen mi intromisión en el tema, U_Goldman, que recomendas? utilizar INNER JOIN para unir las tablas? o sentencias del tipo SELECT * FROM tabla1, tabla2 where tabla1.campo1 = tabla2.campo1 and tabla1.campo2 = tabla2.campo2.... ? (obviamente sin el *).
Gracias.
Suerte!.
__________________
Add, never Remove
  #5 (permalink)  
Antiguo 03/08/2005, 12:07
Avatar de u_goldman
Moderador
 
Fecha de Ingreso: enero-2002
Mensajes: 8.031
Antigüedad: 22 años, 5 meses
Puntos: 98
Hola Mariano, realmente, la forma que planteas no es mas que un INNER JOIN implicito, creo que es mas intuitivo hacerlo explicitamente, y hasta donde se, es lo mismo, yo no lo uso implicito precisamente por hacerlo mas intuitivo, en cuanto al performance la verdad no tengo la mas minima idea, sera cuestion de investigar.

Salu2,
__________________
"El hombre que ha empezado a vivir seriamente por dentro, empieza a vivir más sencillamente por fuera."
-- Ernest Hemingway
  #6 (permalink)  
Antiguo 03/08/2005, 15:20
Avatar de Neuron_376  
Fecha de Ingreso: abril-2005
Mensajes: 1.051
Antigüedad: 19 años, 2 meses
Puntos: 2
Hola!

Tengo entendido que cuando usas select, realmente no es totalmente seguro que se hace un JOIN, por lo cual es mejor usar siempre JOIN directamente, y respecto al performance usar JOIN es mucho mejor que select anidados.

Suerte!!
__________________
NeuronaNet.com... la idea correcta.
http://www.NeuronaNet.com
  #7 (permalink)  
Antiguo 03/08/2005, 22:39
 
Fecha de Ingreso: enero-2004
Ubicación: Chihuahua, México
Mensajes: 146
Antigüedad: 20 años, 5 meses
Puntos: 0
Cita:
Iniciado por mariano_donati
Disculpen mi intromisión en el tema, U_Goldman, que recomendas? utilizar INNER JOIN para unir las tablas? o sentencias del tipo SELECT * FROM tabla1, tabla2 where tabla1.campo1 = tabla2.campo1 and tabla1.campo2 = tabla2.campo2.... ? (obviamente sin el *).
Gracias.
Suerte!.
Así uso yo y se me hace más fácil.
__________________
¡Que todo sea para bien del hombre!
www.dechihuahua.com
Comunidad Chihuahuense
----------- (50%)
Sólo hasta que el Hombre siente la energía universal, sabe de lo que está hecho.
  #8 (permalink)  
Antiguo 04/08/2005, 08:58
 
Fecha de Ingreso: mayo-2005
Mensajes: 31
Antigüedad: 19 años
Puntos: 0
Funcionó con el INNER JOIN.

Gracias a todos!! Así da gusto!!
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

SíEste tema le ha gustado a 1 personas




La zona horaria es GMT -6. Ahora son las 22:38.