• Jueves 25 de Abril de 2024, 21:18

Autor Tema:  Duda Con Vistas En Sql Server  (Leído 3340 veces)

lencho

  • Miembro de PLATA
  • *****
  • Mensajes: 1076
    • Ver Perfil
Duda Con Vistas En Sql Server
« en: Viernes 9 de Febrero de 2007, 00:45 »
0
resulta que trato de crear una vista en SQL Server y cuando coloco un order by y lo ejecuto me sale un error que dice que no puedo usar esa clausula.

Alguien sabe por que ?
y que puedo hacer ?

BYTE.
______________________________________________________________________________________
"No estoy de acuerdo con lo que dices, pero defenderé con mi vida tu derecho a expresarlo"

aicrag

  • Miembro activo
  • **
  • Mensajes: 26
    • Ver Perfil
Re: Duda Con Vistas En Sql Server
« Respuesta #1 en: Viernes 9 de Febrero de 2007, 02:52 »
0
sería de mucha ayuda que pongás el código de tu sql para ver lo que pasa, porque así pueden ser muchas cosas..  :kicking:
El sabio no es aquel que sabe donde esta el tesoro, sino el que trabaja y lo saca

lencho

  • Miembro de PLATA
  • *****
  • Mensajes: 1076
    • Ver Perfil
Re: Duda Con Vistas En Sql Server
« Respuesta #2 en: Viernes 9 de Febrero de 2007, 03:02 »
0
OK

Código: Text
  1.  
  2. CREATE VIEW dbo.Productos_mas_vendidos
  3. AS
  4. SELECT TProducto.CodProducto,
  5.     TProducto.NombreGenerico, SUM(TDetalleVenta.Cantidad)
  6.     AS Cantidad, TLaboratorio.Descripcion AS Laboratorio,
  7.     TPresentacion.Descripcion AS Presentacion
  8. FROM TProducto INNER JOIN
  9.     TLote ON
  10.     TProducto.CodProducto = TLote.CodProducto INNER JOIN
  11.     TDetalleVenta ON
  12.     TLote.Numero = TDetalleVenta.CodLote INNER JOIN
  13.     TVenta ON
  14.     TDetalleVenta.CodVenta = TVenta.CodVenta INNER JOIN
  15.     TPresentacion ON
  16.     TProducto.CodPresentacion = TPresentacion.CodPresentacion INNER
  17.      JOIN
  18.     TLaboratorio ON
  19.     TProducto.CodLaboratorio = TLaboratorio.CodLaboratorio
  20. GROUP BY TProducto.CodProducto, TProducto.NombreGenerico,
  21.     TLaboratorio.Descripcion, TPresentacion.Descripcion
  22.  
  23.  

hasta ahi esta bien, pero cuando le meto el ORDER BY Cantidad DESC y lo ejecuto, me sale el error.

BYTE.
______________________________________________________________________________________
"No estoy de acuerdo con lo que dices, pero defenderé con mi vida tu derecho a expresarlo"

aicrag

  • Miembro activo
  • **
  • Mensajes: 26
    • Ver Perfil
Re: Duda Con Vistas En Sql Server
« Respuesta #3 en: Viernes 9 de Febrero de 2007, 03:04 »
0
resulta que probando en el Query analizer me da dice que la clausula order by no es válida en vistas, funciones en linea, tablas derivadas y subconsultas a menos que se especifique la clausula top....    :P
El sabio no es aquel que sabe donde esta el tesoro, sino el que trabaja y lo saca

lencho

  • Miembro de PLATA
  • *****
  • Mensajes: 1076
    • Ver Perfil
Re: Duda Con Vistas En Sql Server
« Respuesta #4 en: Viernes 9 de Febrero de 2007, 03:15 »
0
pues le pongo la clausula TOP y me sigue saliendo el mismo error.

pero lo curioso es que me fijo en el resultado y me lo ordena como lo quiero.

BYTE.
______________________________________________________________________________________
"No estoy de acuerdo con lo que dices, pero defenderé con mi vida tu derecho a expresarlo"

aicrag

  • Miembro activo
  • **
  • Mensajes: 26
    • Ver Perfil
Re: Duda Con Vistas En Sql Server
« Respuesta #5 en: Viernes 9 de Febrero de 2007, 23:43 »
0
:unsure:  , como??? si te da error, como podés ver el resultado...

según tu consulta sería algo así:

CREATE VIEW dbo.Productos_mas_vendidos
AS
SELECT TOP 100 PERCENT TProducto.CodProducto,
   TProducto.NombreGenerico, SUM(TDetalleVenta.Cantidad)
   AS Cantidad, TLaboratorio.Descripcion AS Laboratorio
   ...
El sabio no es aquel que sabe donde esta el tesoro, sino el que trabaja y lo saca

lencho

  • Miembro de PLATA
  • *****
  • Mensajes: 1076
    • Ver Perfil
Re: Duda Con Vistas En Sql Server
« Respuesta #6 en: Sábado 10 de Febrero de 2007, 03:25 »
0
Cita de: "aicrag"
:unsure:  , como??? si te da error, como podés ver el resultado...

según tu consulta sería algo así:

CREATE VIEW dbo.Productos_mas_vendidos
AS
SELECT TOP 100 PERCENT TProducto.CodProducto,
   TProducto.NombreGenerico, SUM(TDetalleVenta.Cantidad)
   AS Cantidad, TLaboratorio.Descripcion AS Laboratorio
   ...
mi consulta es identica  a la tuya excepto el PERCENT. Para que sirve ?

BYTE.
______________________________________________________________________________________
"No estoy de acuerdo con lo que dices, pero defenderé con mi vida tu derecho a expresarlo"

aicrag

  • Miembro activo
  • **
  • Mensajes: 26
    • Ver Perfil
Re: Duda Con Vistas En Sql Server
« Respuesta #7 en: Sábado 10 de Febrero de 2007, 20:31 »
0
y PERCENT es el porcentaje de filas de la consulta..

si tuvieras algo como

SELECT TOP n PERCENT campos FROM tabla

si no especificás el PERCENT n seria el número de filas que se devuelven, pero si sí lo hacés n sería el porcentaje de filas del conjunto de registros..  :)

así el 100 PERCENT como estás en una vista y no se permite el ORDER BY especificas el TOP con el 100% de los registros.   :ph34r:
El sabio no es aquel que sabe donde esta el tesoro, sino el que trabaja y lo saca

trentia

  • Nuevo Miembro
  • *
  • Mensajes: 24
    • Ver Perfil
Re: Duda Con Vistas En Sql Server
« Respuesta #8 en: Martes 24 de Abril de 2007, 16:22 »
0
En vistas no podemos usar clausulas order by ni clausulas top, ....

Estas clausulas la deberemos usar al ejecutar la vista.

Por ejemplo

create view dbo.View1
as
........


SELECT * FROM View1 Order by X
SELECT TOP 100 * FROM View1 Order by X

Deberemos de tratar a la vista como si fuera una tabla

Espero que haya sido de ayuda

Javier Tirado
IT Consultor
TRENTIA Consulting
Business Intelligence
Javier Tirado
Trentia Consulting
TRENTIA
.]