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

Selección de varias tablas

Estas en el tema de Selección de varias tablas en el foro de ASP Clásico en Foros del Web. Hola amigos... tengo entendido que para hacer una selección en mas de una tabla se hace así: Código: Select tabla1.campo1, tabla1.campo2, tabla2.campo3, tabla2.campo4 From tabla1,tabla2 ...
  #1 (permalink)  
Antiguo 04/05/2005, 11:15
Avatar de El_Metallick  
Fecha de Ingreso: noviembre-2002
Ubicación: Santiago, Chile
Mensajes: 1.718
Antigüedad: 21 años, 7 meses
Puntos: 16
Selección de varias tablas

Hola amigos... tengo entendido que para hacer una selección en mas de una tabla se hace así:
Código:
Select tabla1.campo1, tabla1.campo2, tabla2.campo3, tabla2.campo4 From tabla1,tabla2
o no???

bueno la cosa es que quiero saber una cuantas cosillas:

1.- En la tabla 1 puede haver un campo llamado igual que en la tabla 2???... algo asi:
Código:
Select tabla1.campo1, tabla1.campo2, tabla2.campo1, tabla2.campo2 From tabla1,tabla2
2.- Siesque se puede hacer lo 1... estaría correcto poner algo asi???
Código:
<% = rs("tabla1.campo1") %>
<% = rs("tabla1.campo2") %>
<% = rs("tabla2.campo1") %>
<% = rs("tabla2.campo2") %>
Bueno espero su ayuda gracias de antemano y saludos
__________________
Haz la guerra en la cama y el amor donde se te de la gana...
El tiempo es el mejor maestro, lo único malo es que te mata...¡¡Aprovecha tu tiempo!!
  #2 (permalink)  
Antiguo 04/05/2005, 11:19
Avatar de u_goldman
Moderador
 
Fecha de Ingreso: enero-2002
Mensajes: 8.031
Antigüedad: 22 años, 5 meses
Puntos: 98
A lo mejor con algo asi, se trata de ponerle un alias a ese campo:

SELECT a.campo1, b.campo1 as micampo FROM tabla1 a, tabla2 b

rs("micampo")
__________________
"El hombre que ha empezado a vivir seriamente por dentro, empieza a vivir más sencillamente por fuera."
-- Ernest Hemingway
  #3 (permalink)  
Antiguo 04/05/2005, 11:21
Avatar de Neuron_376  
Fecha de Ingreso: abril-2005
Mensajes: 1.051
Antigüedad: 19 años, 2 meses
Puntos: 2
Por otra parte

Usa un JOIN, no uses consultas multiples asi, resultan muy ineficientes, usa mejor un JOIN.

Suerte!!
  #4 (permalink)  
Antiguo 04/05/2005, 11:23
Avatar de El_Metallick  
Fecha de Ingreso: noviembre-2002
Ubicación: Santiago, Chile
Mensajes: 1.718
Antigüedad: 21 años, 7 meses
Puntos: 16
a ok... una cosita mas... como puedo hacer:
<% Do While Not rs.Eof %>
....
<%
rs.MoveNext
Loop
%>
pero con solo una tabla por ejemplo con la tabla1???
__________________
Haz la guerra en la cama y el amor donde se te de la gana...
El tiempo es el mejor maestro, lo único malo es que te mata...¡¡Aprovecha tu tiempo!!
  #5 (permalink)  
Antiguo 04/05/2005, 11:24
Avatar de El_Metallick  
Fecha de Ingreso: noviembre-2002
Ubicación: Santiago, Chile
Mensajes: 1.718
Antigüedad: 21 años, 7 meses
Puntos: 16
Neuron_376 que es un Join y como se usa???.... nunca lo havia escuchando antes.... gracias
__________________
Haz la guerra en la cama y el amor donde se te de la gana...
El tiempo es el mejor maestro, lo único malo es que te mata...¡¡Aprovecha tu tiempo!!
  #6 (permalink)  
Antiguo 04/05/2005, 11:27
Avatar de u_goldman
Moderador
 
Fecha de Ingreso: enero-2002
Mensajes: 8.031
Antigüedad: 22 años, 5 meses
Puntos: 98
Es cierto, en realidad estás utilizando un JOIN implícito con esa consulta y el performance se ve afectado...

SELECT a.campo1, a.campo2, b.campo1 FROM tabla1 a INNER JOIN tabla2 b ON a.campoID = b.campoID WHERE condicion

Salú!
__________________
"El hombre que ha empezado a vivir seriamente por dentro, empieza a vivir más sencillamente por fuera."
-- Ernest Hemingway
  #7 (permalink)  
Antiguo 04/05/2005, 11:31
Avatar de El_Metallick  
Fecha de Ingreso: noviembre-2002
Ubicación: Santiago, Chile
Mensajes: 1.718
Antigüedad: 21 años, 7 meses
Puntos: 16
donde puedo encontrar algo para entender mejor el funcionamiento de un JOIN????
__________________
Haz la guerra en la cama y el amor donde se te de la gana...
El tiempo es el mejor maestro, lo único malo es que te mata...¡¡Aprovecha tu tiempo!!
  #8 (permalink)  
Antiguo 04/05/2005, 11:36
Avatar de El_Metallick  
Fecha de Ingreso: noviembre-2002
Ubicación: Santiago, Chile
Mensajes: 1.718
Antigüedad: 21 años, 7 meses
Puntos: 16
pero si lo dejo asi no mas funcionaria igual???? osea en el fondo si tengo tabla1.id1 tabla2.id2 y los llamo como <% = rs("id1") %> y <% rs("id2") %> funcionaria????

y lo otro como puedo hacer:
<% Do While Not rs.Eof %>
....
<%
rs.MoveNext
Loop
%>
pero con solo una tabla por ejemplo con la tabla1???
__________________
Haz la guerra en la cama y el amor donde se te de la gana...
El tiempo es el mejor maestro, lo único malo es que te mata...¡¡Aprovecha tu tiempo!!
  #9 (permalink)  
Antiguo 04/05/2005, 11:48
Avatar de u_goldman
Moderador
 
Fecha de Ingreso: enero-2002
Mensajes: 8.031
Antigüedad: 22 años, 5 meses
Puntos: 98
http://www.aspfacil.com/tutsql/joins.asp

y usa el alias que te dije para referirte a campos con el mismo nombre.

Salu2,
__________________
"El hombre que ha empezado a vivir seriamente por dentro, empieza a vivir más sencillamente por fuera."
-- Ernest Hemingway
  #10 (permalink)  
Antiguo 04/05/2005, 11:48
Avatar de Neuron_376  
Fecha de Ingreso: abril-2005
Mensajes: 1.051
Antigüedad: 19 años, 2 meses
Puntos: 2
hola

Si, todo funcionaria igual en el asp, pero debes entender esto, tus datos en el recordset se devolvieron parecido a un arreglo, entonces en un while tu tienes que hacer la distincion a pie, algo como:

while not rs.eof

tabla1 = tabla1 & rs("aliasCampoTabla1")
tabla2 = tabla2 & rs("aliasCampoTabla2")

rs.movenext

loop

Es algo muy basico, pero es lo que necesitas, haces la distincion tu mismo ahi, tambien puedes algo como

while not rs.eof

tabla1 = tabla1 & rs("aliasCampoTabla1")
rs.movenext

loop

rs.movefirst
while not rs.eof

tabla2 = tabla2 & rs("aliasCampoTabla2")
rs.movenext

loop

Sin embargo es mejor el primer metodo, es mas eficiente.
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 16:05.