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

alguien que me pueda dar una idea ?

Estas en el tema de alguien que me pueda dar una idea ? en el foro de ASP Clásico en Foros del Web. El tema es el siguiente : Tengo una tabla donde van las preguntas que hacen usuarios , por otro lado tendo otra tabla con las ...
  #1 (permalink)  
Antiguo 14/11/2004, 21:14
(Desactivado)
 
Fecha de Ingreso: agosto-2002
Mensajes: 1.458
Antigüedad: 22 años, 8 meses
Puntos: 0
alguien que me pueda dar una idea ?

El tema es el siguiente :

Tengo una tabla donde van las preguntas que hacen usuarios , por otro lado tendo otra tabla con las respuestas , tengo capturado el ID relacionado a la pregunta que hizo el usuario como puedo hacer para que la respuesta de parte del administrador se muestre justo debajo de cada usuario que haga la pregunta ????

gracias a quien me pueda dar una idea .-
  #2 (permalink)  
Antiguo 14/11/2004, 22:28
Avatar de trasgukabi  
Fecha de Ingreso: septiembre-2004
Mensajes: 2.749
Antigüedad: 20 años, 7 meses
Puntos: 18
select *.preguntas,*.respuestas from preguntas inner join respuestas on pregunta.id=respuestas.id where preguntas.id=id_usuario
  #3 (permalink)  
Antiguo 15/11/2004, 05:55
(Desactivado)
 
Fecha de Ingreso: agosto-2002
Mensajes: 1.458
Antigüedad: 22 años, 8 meses
Puntos: 0
(inner join) que quiere decir esto ??????
  #4 (permalink)  
Antiguo 15/11/2004, 06:38
 
Fecha de Ingreso: noviembre-2004
Ubicación: Sevilla
Mensajes: 139
Antigüedad: 20 años, 5 meses
Puntos: 0
abre la tabla de preguntas dentro de la de respuestas



Set rsrespuestas = Server.CreateObject("ADODB.Recordset")
..............
.......
Set rspreguntas = Server.CreateObject("ADODB.Recordset")
strSQL = "select preguntas.* from preguntas where id = " & clng(respuestas("id"))
rspreguntas.open strsql, adocon

response.write rsrespuestas("texto") & "<br>"
response.write rspreguntas("texto")

............................

rspreguntas.close
rsrespuestas.movenext

.............
....


seria algo asi

un saludo
__________________
Punkis De Mierda

Foro punk rock

Última edición por xAlex; 15/11/2004 a las 06:43
  #5 (permalink)  
Antiguo 15/11/2004, 06:55
Avatar de trasgukabi  
Fecha de Ingreso: septiembre-2004
Mensajes: 2.749
Antigüedad: 20 años, 7 meses
Puntos: 18
Hugorei:
http://www.programacion.com/bbdd/tutorial/sql/8/

xAlex:

Hay un error bastante jodido en lo que dices. Abrir un recordset repetidamente con el mismo nombre en la misma conexión satura mucho el servidor.
Sacado de las FAQ's ASP de forosdelweb:
Cita:
-No usar el mismo nombre de objeto para distintos queries en el mismo script. SQLServer crea un procedimiento almacenado temporal por cada petición y puede ser que el usar el mismo nombre de objeto se provoque una caída del sistema. Sobre todo trabajando con procedimientos almacenados parametrizados.
http://www.forosdelweb.com/showpost....3&postcount=97

Un saludo.
  #6 (permalink)  
Antiguo 15/11/2004, 07:36
 
Fecha de Ingreso: noviembre-2004
Ubicación: Sevilla
Mensajes: 139
Antigüedad: 20 años, 5 meses
Puntos: 0
gracias por la info

siempre pense que mi metodo era algo cutre pero nunca decidi cambiarlo xq funcionaba bien, con inner join se pueden combinar mas de 2 tablas?

gracias
un saludo
__________________
Punkis De Mierda

Foro punk rock
  #7 (permalink)  
Antiguo 15/11/2004, 07:57
Avatar de trasgukabi  
Fecha de Ingreso: septiembre-2004
Mensajes: 2.749
Antigüedad: 20 años, 7 meses
Puntos: 18
Un ejemplillo: (Los campos con igual nombre están relacionados)
TABLA CLIENTES
id_cliente
nombre
apellidos


TABLA PEDIDOS
id_pedido
id_cliente

TABLA DETALLES_PEDIDO
id_pedido
id_articulo
cantidad


consulta SQL:

SELECT clientes.*, pedidos.*, detalles_pedido.* FROM clientes INNER JOIN (detalles_pedido INNER JOIN pedidos ON detalles_pedido.id_pedido = pedidos.id_pedido) ON clientes.id_cliente = pedidos.cliente;


esta consulta es sólo un ejemplo. No es útil, ya que sacaría datos innecesarios. Aquí habría que empezar a hablar de RIGHT JOIN y LEFT JOIN para ajustar la salida de datos , pero eso mejor en el foro de bases de datos, que sino viene la y nos multa.

Saludos


EDITANDO, QUE ES GERUNDIO: Otra cosa, si quieres verlo gráficamente, en el constructor de consultas de access se ve perfectamente alternando entre la vista diseño y la vista SQL.

Espero que te sirva.

Última edición por trasgukabi; 15/11/2004 a las 08:00
  #8 (permalink)  
Antiguo 15/11/2004, 08:16
 
Fecha de Ingreso: noviembre-2004
Ubicación: Sevilla
Mensajes: 139
Antigüedad: 20 años, 5 meses
Puntos: 0
gracias :D

mira tengo un problema, y ni siquiera he empezado a combinar ams de 2 tablas xD

"SELECT noticias.*, usuarios.* FROM noticias INNER JOIN usuarios ON noticias.autor = " & usuarios.id

el error es: Variable no definida: 'usuarios'

:O

un saludo
__________________
Punkis De Mierda

Foro punk rock
  #9 (permalink)  
Antiguo 15/11/2004, 08:22
Avatar de trasgukabi  
Fecha de Ingreso: septiembre-2004
Mensajes: 2.749
Antigüedad: 20 años, 7 meses
Puntos: 18
SELECT noticias.*, usuarios.* FROM noticias INNER JOIN usuarios ON noticias.autor where noticias.autor="&usuarios.id
  #10 (permalink)  
Antiguo 15/11/2004, 08:32
 
Fecha de Ingreso: noviembre-2004
Ubicación: Sevilla
Mensajes: 139
Antigüedad: 20 años, 5 meses
Puntos: 0
jeje sigue dando el mismo error :S
__________________
Punkis De Mierda

Foro punk rock
  #11 (permalink)  
Antiguo 15/11/2004, 08:50
Avatar de trasgukabi  
Fecha de Ingreso: septiembre-2004
Mensajes: 2.749
Antigüedad: 20 años, 7 meses
Puntos: 18
Seguro que el nombre de la variable es usuarios.id? pon todo el código a ver si sacamos algo en claro.
  #12 (permalink)  
Antiguo 15/11/2004, 09:14
 
Fecha de Ingreso: noviembre-2004
Ubicación: Sevilla
Mensajes: 139
Antigüedad: 20 años, 5 meses
Puntos: 0
si, es usuarios.id




Set rsnoticias = Server.CreateObject("ADODB.Recordset")

strsql = "SELECT noticias.*, usuarios.* FROM noticias INNER JOIN usuarios ON noticias.autor where noticias.autor = " & usuarios.id

rsnoticias.CursorType = 3
rsnoticias.Open strSQL, adoCon
rsnoticias.PageSize = 50
If NOT rsnoticias.EOF Then rsnoticias.AbsolutePage = strpaginaposicion

If rsnoticias.EOF Then
Response.Write "No hay noticias"
Response.End
Else
strnoticiastotales = rsnoticias.RecordCount
strpaginastotales = rsnoticias.PageCount
For strloopcontador = 1 to 50
If rsnoticias.EOF Then Exit For

response.write rsnoticias("titulo")


rsnoticias.MoveNext
Next
End If
__________________
Punkis De Mierda

Foro punk rock
  #13 (permalink)  
Antiguo 15/11/2004, 13:25
Avatar de verinchi  
Fecha de Ingreso: septiembre-2004
Ubicación: Buenos Aires
Mensajes: 647
Antigüedad: 20 años, 7 meses
Puntos: 2
strsql = "SELECT noticias.*, usuarios.* FROM noticias INNER JOIN usuarios ON noticias.autor =usuarios.id

Esto es lo que viene siendo un equivalente mas entendible,(where noticias.autor = " & usuarios.id) en el inner join debes poner las columnas que deben coindidir. Siempre debes tomar columnas de las diferentes tablas que tengan un dato en común pra que te coincidan las filas. De lo contrario o no trae nada o te tira errores como hasta ahora por no haber declarado de que forma realizar el inner join

where noticias.autor = " & usuarios.id sería como final de instrucción luego del inner join si tenés que además de observar la coincidencia en las dos tablas, comparar con un tercer valor que puede ser cualquier variable (pero no otra columna de la página
Espero que se solucione tu tema!!!
:saludos:
__________________
Why can't we not be sober?
www.partitorium.com.ar
  #14 (permalink)  
Antiguo 15/11/2004, 14:44
Avatar de trasgukabi  
Fecha de Ingreso: septiembre-2004
Mensajes: 2.749
Antigüedad: 20 años, 7 meses
Puntos: 18
aghhhhhhh!!! demasiadas horas delante de este aparato. Efectivamente, es como dice verinchi. No sé porqué se me ha metido en la cabeza que querias filtrar la salida por noticias.autor y ni me he fijado que el inner join estaba mal terminado. perdon perdon
  #15 (permalink)  
Antiguo 15/11/2004, 15:58
 
Fecha de Ingreso: noviembre-2004
Ubicación: Sevilla
Mensajes: 139
Antigüedad: 20 años, 5 meses
Puntos: 0
gracias a los 2 por responder, pero no he enterado de nada.

"SELECT noticias.*, usuarios.* FROM noticias INNER JOIN usuarios ON noticias.autor = " & usuarios.id

el campo autor de la tabla noticias es = al campo id de la tabla usuarios, xq no funciona entonces?

un saludo y gracias pòr vuestra atencion
__________________
Punkis De Mierda

Foro punk rock
  #16 (permalink)  
Antiguo 15/11/2004, 16:12
Avatar de trasgukabi  
Fecha de Ingreso: septiembre-2004
Mensajes: 2.749
Antigüedad: 20 años, 7 meses
Puntos: 18
"SELECT noticias.*, usuarios.* FROM noticias INNER JOIN usuarios ON noticias.autor = usuarios.id"

así
  #17 (permalink)  
Antiguo 15/11/2004, 16:45
 
Fecha de Ingreso: noviembre-2004
Ubicación: Sevilla
Mensajes: 139
Antigüedad: 20 años, 5 meses
Puntos: 0
q sencillo era, muchisimas gracias

puestos ya... mi ultima pregunta ignorante... como muestro los campos de la tabla2 , es decir, de la tabla usuarios

un saludo ygracias de nuevo
__________________
Punkis De Mierda

Foro punk rock
  #18 (permalink)  
Antiguo 15/11/2004, 16:45
(Desactivado)
 
Fecha de Ingreso: agosto-2002
Mensajes: 1.458
Antigüedad: 22 años, 8 meses
Puntos: 0
Por favor ayuda al creador de este post urgente

perdon pero yo que fui el creador de este post estoy reperdido si me pudieran ayudar se los agradeceria , quiero entender este codivo sql




LAS TABLAS

Preguntas

id
categoria
pregunta
usuario
imagen

respuestas

pregunta_id
respuesta _id
respuesta
imagen
usuario

campos a comparar para que se pueda insertar las respuesta justo debajo de las preguntas

de la tabla llamada : preguntas el campo id identifica a la pregunta en si

de la tabla llamada : respuestas respuesta_id identifica el id de cada respuesta .

En resumen lo que quiero hacer comparar el id de la tabla llamada preguntas con respuesta_id de la tabla denominada respuestas .

Alguien me puede aclarar si es posible explicando como se haria por que la verdad me mare y no entendo mas nada .

yo estoy usando esta secuencia de SQL

sql ="SELECT TOP 10 * FROM respuestas WHERE preguntaid= " & idnumero & " "

lo que necesito que no me muestre mas de 10 respuestas por que como maximo va a mostrar 10 preguntas .

GRACIAS A QUIEN ME AYUDE
  #19 (permalink)  
Antiguo 15/11/2004, 18:16
Avatar de trasgukabi  
Fecha de Ingreso: septiembre-2004
Mensajes: 2.749
Antigüedad: 20 años, 7 meses
Puntos: 18
a ponernos el mono de trabajo:
"select top 10 preguntas.* respuestas.* from preguntas inner join respuestas on preguntas.id=respuestas.pregunta_id"

y después mírate la claúsula GROUP BY aquí:
http://www.programacion.com/bbdd/tutorial/sql/4/
  #20 (permalink)  
Antiguo 15/11/2004, 19:18
(Desactivado)
 
Fecha de Ingreso: agosto-2002
Mensajes: 1.458
Antigüedad: 22 años, 8 meses
Puntos: 0
me da este error : Microsoft OLE DB Provider for ODBC Drivers error '80040e10'

[Microsoft][Controlador ODBC Microsoft Access] Pocos parámetros. Se esperaba 1.

/line 260

asi lo estoy poniendo :

sql="select top 10 preguntas.* ,respuestas.* from preguntas inner join respuestas on preguntas.id=respuestas.pregunta_id"
  #21 (permalink)  
Antiguo 16/11/2004, 09:07
(Desactivado)
 
Fecha de Ingreso: agosto-2002
Mensajes: 1.458
Antigüedad: 22 años, 8 meses
Puntos: 0
alguien me va a poder ayudar con este error por favor ????????
  #22 (permalink)  
Antiguo 16/11/2004, 09:29
Avatar de AlZuwaga
Colaborador
 
Fecha de Ingreso: febrero-2001
Ubicación: 34.517 S, 58.500 O
Mensajes: 14.550
Antigüedad: 24 años, 2 meses
Puntos: 535
http://www.aspfaq.com/show.asp?id=2128
__________________
...___...
  #23 (permalink)  
Antiguo 16/11/2004, 09:35
Avatar de verinchi  
Fecha de Ingreso: septiembre-2004
Ubicación: Buenos Aires
Mensajes: 647
Antigüedad: 20 años, 7 meses
Puntos: 2
Bueno, no te funciona porque no tenés que poner en la comparación de igualdad del inner join valores de variables sino nombres de columna.
Probá con la siguiente consulta:
"SELECT noticias.*, usuarios.* FROM noticias INNER JOIN usuarios ON noticias.autor = usuarios.id"
__________________
Why can't we not be sober?
www.partitorium.com.ar
  #24 (permalink)  
Antiguo 16/11/2004, 16:38
 
Fecha de Ingreso: noviembre-2004
Ubicación: Sevilla
Mensajes: 139
Antigüedad: 20 años, 5 meses
Puntos: 0
gracias verinchi, el codigo ya funciona bien.

los datos de la tabla MNOTICIAS los muestro como normalmente hago rsnoticias(campo") pero como muestro loos campos de la tabla USUARIOS?

rsnoticias("usuarios.campo") ? xD

un saludo
__________________
Punkis De Mierda

Foro punk rock

Última edición por xAlex; 16/11/2004 a las 16:39
  #25 (permalink)  
Antiguo 16/11/2004, 17:33
(Desactivado)
 
Fecha de Ingreso: agosto-2002
Mensajes: 1.458
Antigüedad: 22 años, 8 meses
Puntos: 0
a ver si de una ves lo entendi :


"SELECT noticias.*, usuarios.* FROM noticias INNER JOIN usuarios ON noticias.autor = usuarios.id"

traduciendo

"SELECT nombre de tabla 1 .* nombre de tabla 2.* FROM nombre de tabla 1 inner join nombre de tabla 2 on nombre de tabla1 + campo = nombre de tabla2 + campo "

Es esto asi o entendi cualquier verdura ?????????'

Última edición por hugorei; 16/11/2004 a las 17:34
  #26 (permalink)  
Antiguo 16/11/2004, 19:21
Avatar de u_goldman
Moderador
 
Fecha de Ingreso: enero-2002
Mensajes: 8.031
Antigüedad: 23 años, 3 meses
Puntos: 98
Entendiste bien amigo

Salu2,
__________________
"El hombre que ha empezado a vivir seriamente por dentro, empieza a vivir más sencillamente por fuera."
-- Ernest Hemingway
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 17:49.