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

Varios Selects sobre una misma tabla

Estas en el tema de Varios Selects sobre una misma tabla en el foro de ASP Clásico en Foros del Web. Hola, Estoy seguro que alguno de vosotros me podra ayudar. Os planteo el problema. Tengo que hacer varias consultas sobre una misma tabla, lo unico ...
  #1 (permalink)  
Antiguo 27/09/2006, 05:56
Avatar de fario13  
Fecha de Ingreso: junio-2004
Ubicación: Entre Madrid y Logroño
Mensajes: 411
Antigüedad: 20 años
Puntos: 7
Varios Selects sobre una misma tabla

Hola,

Estoy seguro que alguno de vosotros me podra ayudar. Os planteo el problema. Tengo que hacer varias consultas sobre una misma tabla, lo unico que cambia en cada consulta es la condicion (Where...). El resultado de todas las consultas lo quiero tener en un recorset para posteriormente paginarlo. En principio estuve mirando clausulas Sql del tipo UNION, es lo mas parecido a lo que quiero hacer, pero esta clausula solo permite poner un ORDER by. Y lo que yo quiero es que para cada una de las consultas pueda ordenar alfabeticamente por un campo.

Por ejemplo, si la tabla fuese de clientes quisiera mostrar en pantalla todos los que fueran de España, seguidos de los que son de Francia, etc. y cada una de las agrupaciones ordenadas por nombre. Y esta visualizacion (resultado total de registros) poderla paginar.

Muchas gracias y un saludo
__________________
Bodegas La Rioja
  #2 (permalink)  
Antiguo 27/09/2006, 06:31
Avatar de Myakire
Colaborador
 
Fecha de Ingreso: enero-2002
Ubicación: Centro de la república
Mensajes: 8.849
Antigüedad: 22 años, 4 meses
Puntos: 146
Cita:
Por ejemplo, si la tabla fuese de clientes quisiera mostrar en pantalla todos los que fueran de España, seguidos de los que son de Francia, etc. y cada una de las agrupaciones ordenadas por nombre. Y esta visualizacion (resultado total de registros) poderla paginar.
mmmmmmmm, por esto último que mencionas creo que no necesitas del union y tampoco necesitas de varias consultas sobre la misma tabla. Creo que solo ocupas una consulta agrupada por pais y durante la presentación (XHTML) debes de ir arrastando el Pais_Anterior para saber cuando cambia dicho campo.

¿Es correcto lo que entendí?
  #3 (permalink)  
Antiguo 27/09/2006, 06:52
Avatar de fario13  
Fecha de Ingreso: junio-2004
Ubicación: Entre Madrid y Logroño
Mensajes: 411
Antigüedad: 20 años
Puntos: 7
Es correcto, entendiste bien. Pero el ejemplo que puse es muy sencillo, la condicion real del Select seria mas compleja, del tipo: where campo1>=0 and campo1<100; y el otro grupo de registro tendrian como condicion algo asi: where campo1>=100 and campo1<200.

Gracias
__________________
Bodegas La Rioja
  #4 (permalink)  
Antiguo 27/09/2006, 07:02
Avatar de Myakire
Colaborador
 
Fecha de Ingreso: enero-2002
Ubicación: Centro de la república
Mensajes: 8.849
Antigüedad: 22 años, 4 meses
Puntos: 146
mmm, pues entonces mas sencillo el asunto, ni siquiera necesitas un group sino un simple order by Campo1 y en la tabla HTML ir llevando un registro del valor de Campo según algunos rangos establecidos.

¿Que estas haciendo exactamente?, quizà pueda ayudarte es plantearlo mejor
  #5 (permalink)  
Antiguo 27/09/2006, 08:17
Avatar de fario13  
Fecha de Ingreso: junio-2004
Ubicación: Entre Madrid y Logroño
Mensajes: 411
Antigüedad: 20 años
Puntos: 7
Ya, pero el tema es ordenar alfabeticamente por un campo llamado "nombre" los primeros registros que cumplen el primer rango establecido, y a continuacion reiniciar el orden alfabetico por el campo "nombre" para los siguientes registros que ya cumplen el segundo rango establecido.

Te cuento el caso real. A traves de un menu selecciono familia y subfamilia de una tabla de productos, por ejemplo "impresoras>laser", muestro un listado con los 100 resultados; pero quiero que los ordene segun la disponibilidad, es decir "en stock", "en 24 horas", "en 1 semana", etc. y a su vez dentro de cada tipo de disponibilidad ordenar los registros alfabeticamente por nombre. Lo complejo de tema esta en calcular la disponibilidad: si el campo unidades es mayor que 0 la disponibilidad es "en stock", pero si es 0 consulto la tabla de pedidos-compra para ver si hay pendiente una entrada de ese articulo, en cuyo caso la disponibilidad es "en 24 horas"; y sino la disponibilidad es "en una semana".

Lo que habia pensado es en hacer un primer select (primera condicion y orden alfabetico por nombre del producto) y generar un recordset. Luego repetir la misma operacion pero con la segunda condicion y "pegar o concatenar" el recordset segundo al primero, etc... Pero no se como concatenar recorset.

Vaya lio, no?
__________________
Bodegas La Rioja
  #6 (permalink)  
Antiguo 27/09/2006, 13:52
Avatar de Myakire
Colaborador
 
Fecha de Ingreso: enero-2002
Ubicación: Centro de la república
Mensajes: 8.849
Antigüedad: 22 años, 4 meses
Puntos: 146
mmmm, pues se me ocurre que con una consulta y un outer join entre Productos y Pedidos-Compra que regrese todos los articulos ordenados por el campo.

A ver, más claro, la acabo de hacer a lo rápido en SQL Server, así que no le prestes mucha atención a las asignaciones innecesarias
Cita:
SELECT IdProducto, Famlia, SubFamilia, Descripcion, Unidades, CASE Unidades WHEN 0 THEN CASE WHEN ProdPedido IS NULL
THEN '1 semana' ELSE '24 Hrs' END ELSE 'En Stock' END AS Disponibilidad
FROM (SELECT dbo.Productos.IdProducto, dbo.Productos.Famlia, dbo.Productos.SubFamilia, dbo.Productos.Descripcion, dbo.Productos.Unidades,
dbo.Pedidos_Productos.IdProducto AS ProdPedido, CASE WHEN dbo.Pedidos_Productos.IdProducto IS NULL
THEN '1 semana' ELSE '24 hrs' END AS Disponibilidad
FROM dbo.Pedidos_Productos RIGHT OUTER JOIN
dbo.Productos ON dbo.Pedidos_Productos.IdProducto = dbo.Productos.IdProducto) p
ORDER BY Famlia, SubFamilia, Disponibilidad, Descripcion
¿que BD's usas?
  #7 (permalink)  
Antiguo 28/09/2006, 09:29
Avatar de fario13  
Fecha de Ingreso: junio-2004
Ubicación: Entre Madrid y Logroño
Mensajes: 411
Antigüedad: 20 años
Puntos: 7
Al final lo he solucionado de otra forma. He hecho 4 selects diferentes (cada uno con su condicion y ordenacion) y los he cargado con Getrows en 4 vectores y luego los he concatenado antes de paginar el vector resultante. De todas formas muchas gracias por tu interes y tu ayuda Myakire.
__________________
Bodegas La Rioja
  #8 (permalink)  
Antiguo 28/09/2006, 11:17
Avatar de Myakire
Colaborador
 
Fecha de Ingreso: enero-2002
Ubicación: Centro de la república
Mensajes: 8.849
Antigüedad: 22 años, 4 meses
Puntos: 146
Lo que cuenta es que funcione. Pero sería util que voltearas para problemas futuros de este tipo a las subconsultas (con en el ejemplo que tu puse), son muy útiles y son mucho mejores que hacer varias peticiones a la BD's

Saludos
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:26.