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

Problema con select

Estas en el tema de Problema con select en el foro de ASP Clásico en Foros del Web. Estimados...tengo las siguientes tablas Actividades {año, dia, mes, actividad, especialidad, hora} Especialidad{codespecialidad, descripcion} Y quiero seleccionar los dos datos de la tabla especialidad, siempre y ...
  #1 (permalink)  
Antiguo 07/04/2004, 15:06
 
Fecha de Ingreso: marzo-2003
Ubicación: onde toy?
Mensajes: 1.437
Antigüedad: 21 años, 3 meses
Puntos: 9
Problema con select

Estimados...tengo las siguientes tablas

Actividades {año, dia, mes, actividad, especialidad, hora}
Especialidad{codespecialidad, descripcion}

Y quiero seleccionar los dos datos de la tabla especialidad, siempre y cuando en Actividades exista una actividad y tengo lo siguiente pero no me resulta..haber si me ayudan

<select class="input" name="especialidad" maxlength ="15">
<option value="0" Selected>Seleccione Especialidad</option>
<%
Set Mi_Conexion = Server.CreateObject("ADODB.Connection")
Set Res = Server.CreateObject("ADODB.Recordset")
Mi_Conexion.Open "DRIVER={Microsoft Access Driver (*.mdb)}; DBQ=C:\Inetpub\wwwroot\horas\horas.mdb;"
sql = "SELECT * FROM especialidad where codespecialidad =(select especial from actividades where dia= '"&dia&"' and mes = '"&mes&"' and año = '"&anno&"');"
Set Res = Mi_Conexion.Execute(sql)
response.write(mes)
While Not res.EOF
%>
<option value="<%=res("codespecialidad")%>" ><%=res("descripcion")%></option>
<%
res.MoveNext
Wend
res.Close
set res = nothing
Mi_Conexion.close
set Mi_Conexion= nothing
%>
</select>

Gracias de antemano
__________________
Buena Vida...
Francisco
  #2 (permalink)  
Antiguo 07/04/2004, 16:10
Avatar de bakanzipp  
Fecha de Ingreso: noviembre-2001
Ubicación: santiago de shilli
Mensajes: 2.554
Antigüedad: 22 años, 7 meses
Puntos: 0
haces refencia en tu tabla Actividades a un campo especial en el select interno y segun tu definicion el campo deberia llamarse especialidad

saludos
  #3 (permalink)  
Antiguo 07/04/2004, 16:14
 
Fecha de Ingreso: marzo-2003
Ubicación: onde toy?
Mensajes: 1.437
Antigüedad: 21 años, 3 meses
Puntos: 9
Sorry..pero escribí mal la descripcion del campo..en realidad el campo se llama "especial"
__________________
Buena Vida...
Francisco
  #4 (permalink)  
Antiguo 07/04/2004, 16:26
Avatar de bakanzipp  
Fecha de Ingreso: noviembre-2001
Ubicación: santiago de shilli
Mensajes: 2.554
Antigüedad: 22 años, 7 meses
Puntos: 0
tonces no veo problemas con el select siempre y cuando especial contenga la misma informacion que codespecialidad...

¿te arroja algun error o no te lista nada?, trataste de ejecutar la consulta sql primero en el visor sql de access para ver que te entrega?

saludos
  #5 (permalink)  
Antiguo 07/04/2004, 16:31
 
Fecha de Ingreso: marzo-2003
Ubicación: onde toy?
Mensajes: 1.437
Antigüedad: 21 años, 3 meses
Puntos: 9
aaaajjjjj puede ser eso........ porque haber.....nop..no deberia haber problema
El campo Codespecial es autonumerico y especial es numero

La verdad es que no me lista nada y lo que quiero hacer es llenar en select de acuerdo a una fecha que escoge el usuario , es decir si hay actividades en esa fecha...se desplieguen solo las especialidades que tienen actividades ...
__________________
Buena Vida...
Francisco
  #6 (permalink)  
Antiguo 07/04/2004, 16:48
Avatar de bakanzipp  
Fecha de Ingreso: noviembre-2001
Ubicación: santiago de shilli
Mensajes: 2.554
Antigüedad: 22 años, 7 meses
Puntos: 0
mira para empezar...
lo ideal hubiese sido que codespecial sea llave foranea de la tabla actividades para así asegurarte que la información que se almacena en actividades vaya a parar a especialidad con el mismo valor...

de todas formas haz los select separado y verifica que haya informacion que pueda enlazarse entre las dos tablas.

saludos
  #7 (permalink)  
Antiguo 08/04/2004, 06:47
 
Fecha de Ingreso: marzo-2003
Ubicación: onde toy?
Mensajes: 1.437
Antigüedad: 21 años, 3 meses
Puntos: 9
Que tal denuevo yo
Ayer noche hice el siguiente código para intentar ver si de otra forma sale lo que quiero hacer
<% fecha= request.querystring("fecha")
dia = day(fecha)
mes = month(fecha)
anno = year(fecha)



Set Mi_Conexion = Server.CreateObject("ADODB.Connection")
Set Res = Server.CreateObject("ADODB.Recordset")
Mi_Conexion.Open "DRIVER={Microsoft Access Driver (*.mdb)}; DBQ=C:\Inetpub\wwwroot\horas\horas.mdb;"
sql = "SELECT * FROM especialidad where codespecial = (select especial from actividades where dia= '"&dia&"' and mes ='"&mes&"' and año= '"&anno&"') ;"
Set Res = Mi_Conexion.Execute(sql)
While Not res.EOF
response.write"<br>"
response.write(res("codespecial") )
res.MoveNext
Wend
res.Close
set res = nothing
Mi_Conexion.close
set Mi_Conexion= nothing
%>

Pero al ejecutarlo me aparece el siguiente mensaje

Microsoft OLE DB Provider for ODBC Drivers error '80040e10'

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

/horas/hola.asp, line 18
__________________
Buena Vida...
Francisco
  #8 (permalink)  
Antiguo 08/04/2004, 10:08
Avatar de bakanzipp  
Fecha de Ingreso: noviembre-2001
Ubicación: santiago de shilli
Mensajes: 2.554
Antigüedad: 22 años, 7 meses
Puntos: 0
vamos por paso...

primero no veo el error en el sql...
hazte esta sql y ve que te arroja

Código PHP:
"select especial from actividades where dia= '"&dia&"' and mes ='"&mes&"' and año= '"&anno&"'" 
haz un response.write al sql y cuentanos que te imprime y que datos te trae.

saludos
  #9 (permalink)  
Antiguo 08/04/2004, 10:41
 
Fecha de Ingreso: marzo-2003
Ubicación: onde toy?
Mensajes: 1.437
Antigüedad: 21 años, 3 meses
Puntos: 9
aah si eso hice ayer...hice esa consulta y claro..me erroja 23...que es el codigo de una especialidad...luego traté de hacer el select anidado y me decia que la consulta solo devolvería un solo dato pero no lo mostraba....
__________________
Buena Vida...
Francisco
  #10 (permalink)  
Antiguo 08/04/2004, 10:49
Avatar de bakanzipp  
Fecha de Ingreso: noviembre-2001
Ubicación: santiago de shilli
Mensajes: 2.554
Antigüedad: 22 años, 7 meses
Puntos: 0
ah,

tonces tu problema no esta en el select sino en lo que deseas mostrar..

¿esto te funciona?

response.write res("codespecial")
  #11 (permalink)  
Antiguo 08/04/2004, 11:22
 
Fecha de Ingreso: marzo-2003
Ubicación: onde toy?
Mensajes: 1.437
Antigüedad: 21 años, 3 meses
Puntos: 9
Cita:
Mensaje Original por bakanzipp
vamos por paso...

primero no veo el error en el sql...
hazte esta sql y ve que te arroja

Código PHP:
"select especial from actividades where dia= '"&dia&"' and mes ='"&mes&"' and año= '"&anno&"'" 
haz un response.write al sql y cuentanos que te imprime y que datos te trae.

saludos

cuando hice esto ..me entregó esto:

select especial from actividades where dia= '9' and mes ='4' and año= '2004'
__________________
Buena Vida...
Francisco
  #12 (permalink)  
Antiguo 08/04/2004, 12:52
Avatar de bakanzipp  
Fecha de Ingreso: noviembre-2001
Ubicación: santiago de shilli
Mensajes: 2.554
Antigüedad: 22 años, 7 meses
Puntos: 0
yaaaaaaa....y entonces te trae el registro res("codespecial")?
  #13 (permalink)  
Antiguo 08/04/2004, 13:05
 
Fecha de Ingreso: marzo-2003
Ubicación: onde toy?
Mensajes: 1.437
Antigüedad: 21 años, 3 meses
Puntos: 9
Cita:
Mensaje Original por bakanzipp
yaaaaaaa....y entonces te trae el registro res("codespecial")?
nop...no me lo lista :,(
__________________
Buena Vida...
Francisco
  #14 (permalink)  
Antiguo 08/04/2004, 14:10
Avatar de bakanzipp  
Fecha de Ingreso: noviembre-2001
Ubicación: santiago de shilli
Mensajes: 2.554
Antigüedad: 22 años, 7 meses
Puntos: 0
jejee...

pero si dices que te trae un registro como es que no te lo lista?
  #15 (permalink)  
Antiguo 08/04/2004, 14:41
 
Fecha de Ingreso: marzo-2003
Ubicación: onde toy?
Mensajes: 1.437
Antigüedad: 21 años, 3 meses
Puntos: 9
Mira.si tomo la consulta que me dejaste...osea

"select especial from actividades where dia= '"&dia&"' and mes ='"&mes&"' and año= '"&anno&"'"

trae el registro y los lista tantas cveces aparezca en la tabla actividad... pero supongamos que la actividad es

Codespecialidad = 23
Especialidad = Fisiatría

solo aparece 23 por esa razon quiero consultar a la tabla especialidad {codespecialidad, descripcion}
con la consulta que dejé anteriormente para que traiga el nombre de la especialidad...osea Fisiatría...pero ahi no lista nada
__________________
Buena Vida...
Francisco
  #16 (permalink)  
Antiguo 08/04/2004, 15:16
Avatar de bakanzipp  
Fecha de Ingreso: noviembre-2001
Ubicación: santiago de shilli
Mensajes: 2.554
Antigüedad: 22 años, 7 meses
Puntos: 0
harto raro...prueba con join tonces.

Código PHP:
SELECT e.descripcione.codespecialidad FROM especialidad eactividades a where e.codespecial a.especial and a.dia'"&dia&"' and a.mes ='"&mes&"' and a.año'"&anno&"' 
  #17 (permalink)  
Antiguo 08/04/2004, 15:26
 
Fecha de Ingreso: marzo-2003
Ubicación: onde toy?
Mensajes: 1.437
Antigüedad: 21 años, 3 meses
Puntos: 9
Hey Bakanzzip..ahora si funca... explicame el por qué?? por fa' y sabes..ahora estoy haciendole un group by y ese no funca... porque como en la tabla actividad tengo varias veces una misma especialidad...debo sacar solo una vez ese dato..comprendes??

pero más me interesa la explicacion de lo anterior..gracias por la dedicacion que le has dado a este topic, en serio..
__________________
Buena Vida...
Francisco
  #18 (permalink)  
Antiguo 08/04/2004, 16:37
Avatar de bakanzipp  
Fecha de Ingreso: noviembre-2001
Ubicación: santiago de shilli
Mensajes: 2.554
Antigüedad: 22 años, 7 meses
Puntos: 0
la explicacion de por que no te funciona no tengo idea...

para hacer consultas de relacion entre tablas puedes usar tanto subconsultas (consultas anidadas) como join (que fue la opcion que te funciono).

algunos dicen que una es más optima que la otra pero en esa guerra no me meto, por lo general uso join porque estoy más acostumbrado al código, pero lo de subconsulta es tan válido como el otro.

Si quieres elegir datos distintos usa DISTINCT

select DISTINCT(campo) from tabla.

saludos y suerte.
  #19 (permalink)  
Antiguo 12/04/2004, 08:14
 
Fecha de Ingreso: marzo-2003
Ubicación: onde toy?
Mensajes: 1.437
Antigüedad: 21 años, 3 meses
Puntos: 9
cof, cof..ejem..bakanzzip..ya me da lata molestrate tanto pero mira..estuve haciendo el distinct..pero no funca...

sql= "SELECT e.descripcion,e.codespecialidad , distinct (a.especial) FROM especialidad e, actividades a where e.codespecialidad = a.especial and a.dia= '"&dia&"' and a.mes ='"&mes&"' and a.año= '"&anno&"' "

Lo hice con y sin ( ) ..y nada... este codigo está que me vuelve loco!!!!!!
__________________
Buena Vida...
Francisco
  #20 (permalink)  
Antiguo 12/04/2004, 10:13
Avatar de RootK
Moderador
 
Fecha de Ingreso: febrero-2002
Ubicación: México D.F
Mensajes: 8.004
Antigüedad: 22 años, 4 meses
Puntos: 50
Es que el distinct va despues de tu select:

Cita:
SELECT distinct a.especial, e.descripcion,e.codespecialidad FROM especialidad ....

Saludos
__________________
Nadie roba nada ya que en la vida todo se paga . . .

Exentrit - Soluciones SharePoint & Net
  #21 (permalink)  
Antiguo 12/04/2004, 10:29
 
Fecha de Ingreso: marzo-2003
Ubicación: onde toy?
Mensajes: 1.437
Antigüedad: 21 años, 3 meses
Puntos: 9
gracias... ya funciona..

RootK habia puesto la sentencia como tu finalmente me has dicho peeeroo.. me equivoque de campo...uff por fin puedo avanzar otro poco

Gracias a todos!!!
__________________
Buena Vida...
Francisco
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 21:52.