Ver Mensaje Individual
  #1 (permalink)  
Antiguo 26/04/2007, 08:58
Avatar de Shilfild
Shilfild
 
Fecha de Ingreso: marzo-2007
Mensajes: 120
Antigüedad: 17 años, 8 meses
Puntos: 0
No consigo crear la select correcta

Hola, para empezar, decir que di Oracle, pero ahora creo que ando perdidisima, me gustaría que me asesorarais al hacer una select en mi BD

La BD es Access y la ejecuto en ASP mediante SQL, pero la pregunta es general... Os dejo una imágen de mis tablas.

http://img231.imageshack.us/img231/7523/tablassd7.jpg

Bien, intentaré explicarme como mejor pueda, pero es bastante lioso..

En mi BD hay varias tablas, cada una trata un tema: comics,conciertos etc
Pero habrá una tabla en la que el webmaster meterá las noticias que quiere destacar, esta tabla es destacados y sus campos son:
id_destacado: es la identificación en esa tabla, cada articulo destacado tiene su identificación
destacados_tipo: se refiere al número al que está relacionada la tabla.
destacados_noticia: se refiere a id_x de la tabla que sea
destacados_destacado: de momento es un campo que tiene por defecto "Si"

Después está la tabla tipos sus campos son:
id_tipo: esta relacionado con la tabla destacados
tipo_nombre: muestra el nombre de cada tabla relacionado con un número

De manera que por ejemplo podamos tener

Tabla destacados
id_destacado: 1
destacados_tipo: 2 (Sería de tipo discos)
destacados_noticia: 4 (La noticia 4 de la tabla discos)
destacados_destacado: Si

Tabla tipos
id_tipo: 2
nombre_tipo: discos

Espero que se haya entendido medianamente...

Yo,lo que pretendo hacer es un listado, de por ejemplo los últimos 4 articulos destacados y quiero su título y su imágen para ello he hecho este código:

Recojo todo lo que hay en la tabla destacados en orden descendente
Código:
sentencia="Select * from destacados order by id_destacado desc";
Pongo un contador a 0
Código:
contador=0;
while (!rstIntranet.eof & contador<=4){
		%>
			<% 
   varmax="Select max(id_destacado)-contador from destacados"; // Como quiero coger los 4 últimos registros, cojo el máximo-contador (que en este momento es 0) y después aumenta
    vartabla="Select tipo_nombre from tipos where id_tipo=(select destacados_tipo from destacados where id_destacado=varmax)"; // Aquí quiero tener el string que me indique a qué tabla debo atacar ayudada de destacados_noticia.	 

			
	Select Case vartabla // Si la tabla es "comics" que se muestre hola
	  case "comics":
		Response.Write("hola")
	  case else:
		Response.Write("adios")				
	End Select	
			

	<%rstIntranet.Movenext();
	contador=contador + 1; // Incrementamos el contador para ir restandoselo al max de id. 4-0,4-1,4-2,4-3,4-4;
	}
	%>
Me gustaría saber si estoy en lo correcto, ya que me dá fallo primero aquí:
Código:
 varmax="Select max(id_destacado)-contador from destacados";
Que creo que es la resta esa del contador, ya que si la quito me dá otro error

Y después aquí:
Código:
vartabla="Select tipo_nombre from tipos where id_tipo=(select destacados_tipo from destacados where id_destacado=varmax)";
Que me dice que pocos parametros.

Ejecuto las selects con SQL por si sirve de algo de esta manera:
intra2.Open(varmax,cone,adOpenStatic,adCmdTable);
intra3.Open(vartabla,cone,adOpenStatic,adCmdTable) ;

Espero que me podais ayudar de alguna manera, porque se me está haciendo imposible, sé que hay una manera de hacer consultas, con Access pero no sé usarlo, lo siento por un post tan largo, pero prefería explicar bien lo que me pasaba.