Foros del Web » Programación para mayores de 30 ;) » Bases de Datos General » SQL Server »

[SOLUCIONADO] group by en vista

Estas en el tema de group by en vista en el foro de SQL Server en Foros del Web. Estoy intentando hacer una vista y quiero ordenar por un campo. He intentado agregar el order by en el código de la select de la ...
  #1 (permalink)  
Antiguo 27/04/2015, 04:13
(Desactivado)
 
Fecha de Ingreso: marzo-2012
Mensajes: 366
Antigüedad: 12 años
Puntos: 31
group by en vista

Estoy intentando hacer una vista y quiero ordenar por un campo. He intentado agregar el order by en el código de la select de la vista, pero me da error.

No me importa tener que borrar y volver a crear la vista, pues como no pierdo datos no me importa crearla de nuevo. Pero no se como hacerlo para que me salga ordenada.

alguien sabría como hacerla?
  #2 (permalink)  
Antiguo 27/04/2015, 05:41
 
Fecha de Ingreso: julio-2012
Ubicación: Israel
Mensajes: 360
Antigüedad: 11 años, 9 meses
Puntos: 40
Respuesta: group by en vista

Es imposible: la vista te devuelve un conjunto de filas, y si las quieres ordenadas tienes que ordenarlas en el comando Select (Select .. From MiVista Order By ..).
De lo contrario, puedes obtener el conjunto ordenado a través de un procedimiento.
__________________
El Castellano no es mi lengua materna: discúlpenme por los errores gramaticales.
Mi blog
  #3 (permalink)  
Antiguo 27/04/2015, 06:14
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 16 años, 4 meses
Puntos: 2658
Respuesta: group by en vista

Cita:
Iniciado por Kritik Ver Mensaje
Estoy intentando hacer una vista y quiero ordenar por un campo. He intentado agregar el order by en el código de la select de la vista, pero me da error.

No me importa tener que borrar y volver a crear la vista, pues como no pierdo datos no me importa crearla de nuevo. Pero no se como hacerlo para que me salga ordenada.

alguien sabría como hacerla?
Manual de referencia, manual de referencia, manual de referencia, MANUAL DE REFERENCIA...

Ante cualquier duda, consulta el manual de referencia, por favor. Cualquier DBA que se precie lo hace. No es vergüenza leer los manuales. Es parte de la documentacion obligatoria para trabajar en este rubro...

Cita:
Las cláusulas SELECT de una definición de vista no pueden incluir lo siguiente:

Una cláusula ORDER BY, a menos que también haya una cláusula TOP en la lista de selección de la instrucción SELECT
Cita:
Nota importante Importante

La cláusula ORDER BY solo se usa para determinar las filas devueltas por la cláusula TOP u OFFSET en la definición de la vista. Esta cláusula no garantiza resultados ordenados cuando se consulte la vista, a menos que también se especifique ORDER BY en la propia consulta.
La palabra clave INTO

La cláusula OPTION

Una referencia a una tabla temporal o a una variable de tabla
¿Te queda más claro?

Ver CREATE VIEW en MSDN
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #4 (permalink)  
Antiguo 27/04/2015, 09:16
(Desactivado)
 
Fecha de Ingreso: marzo-2012
Mensajes: 366
Antigüedad: 12 años
Puntos: 31
Respuesta: group by en vista

Es lo que había leído, pero era por saber si había algún truco para conseguir esto. Como por ejemplo hacer una vista que accediese a los datos de mi vista y que esa segunda ya consiguiese tenerlos ordenados... o algún truco parecido. (aunque este no funcione, pero otro que si).

Más que nada es por mí... para cuando vaya yo a ver los datos con el management. Realmente mi programa no necesita los datos ordenados. No voy a presentar ninguna lista del resultado ni nada parecido.

Por eso tampoco me preocupa que no se pueda hacer. Y si en otro momento lo necesitase ya se que en la propia select de mi programa podría ordenarlos.

Pero bueno, si no se puede no se puede. Es como si pregunto que si puedo ir volando con mi coche de Madrid a Barcelona para así tardar menos. Pues si no se puede, no se puede. Y si no existen aviones comerciales que admitan coches enteros en sus equipajes... pues no se puede y punto.

Última edición por gnzsoloyo; 27/04/2015 a las 10:07 Razón: No aplica
  #5 (permalink)  
Antiguo 27/04/2015, 09:32
 
Fecha de Ingreso: julio-2012
Ubicación: Israel
Mensajes: 360
Antigüedad: 11 años, 9 meses
Puntos: 40
Respuesta: group by en vista

Supongo que hay que leer también el manual de referencia del coche..

Suponemos que creas una vista V1 con las tablas T1 y T2,
y ejecutás una Select con Join entre V1 y T3 (otra tabla).
Lo que vas a ver en el plan de ejecución son las tres tablas T1 & T2 & T3, y no la vista V1 & T3, y en este caso no hay ningún sentido en una clausula Order By dentro de la vista.
Lo mismo cuando ejecutas el comando Select .. From V1 Order By Col1: también en este caso no hay ningún sentido en una clausula Order By dentro de la vista.
__________________
El Castellano no es mi lengua materna: discúlpenme por los errores gramaticales.
Mi blog
  #6 (permalink)  
Antiguo 27/04/2015, 10:08
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 16 años, 4 meses
Puntos: 2658
Respuesta: group by en vista

Cita:
Es lo que había leído, pero era por saber si había algún truco para conseguir esto. Como por ejemplo hacer una vista que accediese a los datos de mi vista y que esa segunda ya consiguiese tenerlos ordenados... o algún truco parecido. (aunque este no funcione, pero otro que si).
No puedes, con un "truco", modificar algo que está definido como kernel.
En todo caso debes lograr un proceso que realice la tarea, o bien usar las alternativas que el DBMS te provee.
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)

Etiquetas: group, select, vista
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 18:39.