PHP - Uso de funciones de tabla con PHP

 
Vista:
sin imagen de perfil
Val: 126
Ha aumentado su posición en 12 puestos en PHP (en relación al último mes)
Gráfica de PHP

Uso de funciones de tabla con PHP

Publicado por German David (54 intervenciones) el 24/03/2021 12:43:45
Cordial saludo, en mi sitio web estoy presentando los datos de una consulta realizada en SQL server con una función de tabla.
La función de tabla es esta:
1
SELECT * FROM [dbo].[fnTbCalcAceiInforPendientes](2021,3,'engine') ORDER BY ubicacion,equipo,numero_estado_corregido,componente

Cuando la ejecuto en SQL server me arroja los resultados.

Luego la inclui en mi sitio asi:
1
2
$sql_query2="SELECT * FROM [dbo].[fnTbCalcAceiInforPendientes](2021,3,'engine') ORDER BY ubicacion,equipo,numero_estado_corregido,componente"
$stml2=sqlsrv_query($con,$sql_query2);

En el momento de solicitar la informacion que contiene la tabla, lo cual hago con:
1
while($row=sqlsrv_fetch_array($stml2)) { ?>
, no me arroja ningun dato.

Luego le quite el ORDER BY a la funcion de tabla quedando asi:
1
2
$sql_query2="SELECT * FROM [dbo].[fnTbCalcAceiInforPendientes](2021,3,'engine')"
$stml2=sqlsrv_query($con,$sql_query2);
y en ese momento si funciona.

Como mi deseo es poderla ordenar, quisiera saber que es lo que estoy haciendo mal.
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
sin imagen de perfil
Val: 393
Ha mantenido su posición en PHP (en relación al último mes)
Gráfica de PHP

Uso de funciones de tabla con PHP

Publicado por Jefferson (203 intervenciones) el 24/03/2021 21:20:29
hola amigo

Quizas los fields que estas indexando no existan (chequea eso)

o indicale a MySql el orden

1
ORDER BY ubicacion ASC, equipo DESC, numero_estado_corregido ASC, componente DESC

Prueba y comentas

Saludos
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil
Val: 126
Ha aumentado su posición en 12 puestos en PHP (en relación al último mes)
Gráfica de PHP

Uso de funciones de tabla con PHP

Publicado por German David (54 intervenciones) el 25/03/2021 12:43:00
Cordial saludo Jefferson.
Al incluir el order by como me dices
1
ORDER BY ubicacion ASC, equipo DESC, numero_estado_corregido ASC, componente DESC
me sucede algo en la consulta.
Sin lel order by, me entrega 32 registros, pero ahora con el order by que me indicas solo me entrega 6 registros.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Mauro
Val: 2.761
Oro
Ha aumentado 1 puesto en PHP (en relación al último mes)
Gráfica de PHP

Uso de funciones de tabla con PHP

Publicado por Mauro (1036 intervenciones) el 25/03/2021 13:20:50
Hola German:

No conozco tanto de SQL Server, pero lo que estás haciendo al escribir

1
[dbo].[fnTbCalcAceiInforPendientes](2021,3,'engine')

¿Es llamar a una vista parametrizada? En tal caso, ¿no deberías ordenar dentro del código de la vista?
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil
Val: 126
Ha aumentado su posición en 12 puestos en PHP (en relación al último mes)
Gráfica de PHP

Uso de funciones de tabla con PHP

Publicado por German David (54 intervenciones) el 25/03/2021 20:00:50
Hola Mauro, si definiéndolo en mis palabras una función de tabla en SQL server es una vista a la que se puede dar parámetros. El problema con estas funciones es que no permiten que se ejecuten ORDER BY en la función.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil
Val: 393
Ha mantenido su posición en PHP (en relación al último mes)
Gráfica de PHP

Uso de funciones de tabla con PHP

Publicado por Jefferson (203 intervenciones) el 25/03/2021 21:33:26


Como que no lo permiten ?


Sql server si permite el orden by, incluso dentro de la función como en la expresión regular que creas para la consulta.

Quizás deberías postear el código completo
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil
Val: 126
Ha aumentado su posición en 12 puestos en PHP (en relación al último mes)
Gráfica de PHP

Uso de funciones de tabla con PHP

Publicado por German David (54 intervenciones) el 26/03/2021 12:25:53
Hola Jefferson.

Mira este es el mensaje de error que sale en SQL Server cuando tratas de hacer un ORDER BY dentro de una función, para este caso, una función de tabla.

Msg 1033, Level 15, State 1, Procedure fnTbCalcAceiInforPendientes, Line 78 [Batch Start Line 7]
The ORDER BY clause is invalid in views, inline functions, derived tables, subqueries, and common table expressions, unless TOP, OFFSET or FOR XML is also specified.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil
Val: 393
Ha mantenido su posición en PHP (en relación al último mes)
Gráfica de PHP

Uso de funciones de tabla con PHP

Publicado por Jefferson (203 intervenciones) el 26/03/2021 15:15:07
y esta funcion fnTbCalcAceiInforPendientes Como es la estructura ?

El error te dice que no puede ejecutar el order dentro de esa funcion, no que sql no puede hacerlo

si posteas la funcion puede que alguno te colabore, pero a ciegas es imposible.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Mauro
Val: 2.761
Oro
Ha aumentado 1 puesto en PHP (en relación al último mes)
Gráfica de PHP

Uso de funciones de tabla con PHP

Publicado por Mauro (1036 intervenciones) el 27/03/2021 14:55:02
Por lo que veo si usas TOP y/u OFFSET podría funcionar... ¿puedes incorporarlos o necesitas sí o sí el conjunto completo de registros?
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil
Val: 126
Ha aumentado su posición en 12 puestos en PHP (en relación al último mes)
Gráfica de PHP

Uso de funciones de tabla con PHP

Publicado por German David (54 intervenciones) el 30/03/2021 14:23:59
Cordial saludo.

Esta es la función a la que no he podido efectuarle el ORDER BY dentro de la misma.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
ALTER FUNCTION [dbo].[fnTbCalcAceiInforPendientes]
(
	-- Add the parameters for the function here
	@año AS INT,
	@mes AS INT,
	@componente AS VARCHAR(50)
)
RETURNS TABLE
AS
RETURN
(
	-- Add the SELECT statement with parameter references here
		SELECT [ubicacion]
			  ,[estado_corregido]
			  ,[equipo]
			  ,[Rutina_manteniento_escogida]
		      ,[fecha_manteniento_escogida]
			  ,[componente]
			  ,[posicion]
			  ,[fecha_muestra]
			  ,[codigo_muestra]
			  ,[Desgaste_Al]
			  ,[Desgaste_Cr]
			  ,[Desgaste_Cu]
			  ,[Desgaste_Fe]
			  ,[Desgaste_Pb]
			  ,[Desgaste_Sn]
			  ,[Contaminacion_Water_Vol]
			  ,[Contaminacion_Water]
			  ,[Contaminacion_Coolant]
			  ,[Contaminacion_B]
			  ,[Contaminacion_K]
			  ,[Contaminacion_Na]
			  ,[Contaminacion_Fuel_Dilut]
			  ,[Contaminacion_Si]
			  ,[Contaminacion_Soot]
			  ,[Aceite_Visc100C]
			  ,[Aceite_Visc40C]
			  ,[Aceite_Oxidation]
			  ,[Aceite_Nitration]
			  --,[Comentarios]
			  ,[accion_realizada]
			  ,[fecha_accion]
			  ,[persona_responde]
			  ,[RESULT_Al]
			  ,[RESULT_Cr]
			  ,[RESULT_Cu]
			  ,[RESULT_Fe]
			  ,[RESULT_Pb]
			  ,[RESULT_Sn]
			  ,[RESULT_Water]
			  ,[RESULT_Water_Vol]
			  ,[RESULT_Coolant_Indicator]
			  ,[RESULT_B]
			  ,[RESULT_K]
			  ,[RESULT_Na]
			  ,[RESULT_Fuel_Dilut]
			  ,[RESULT_Si]
			  ,[RESULT_Soot_Corregido]
			  ,[RESULT_Visc100C]
			  ,[RESULT_Visc40C]
			  ,[RESULT_Oxidation]
			  ,[RESULT_Nitration]
			  ,[numero_estado_corregido]
			  ,[estado_solicitud]
			  ,[fecha_informe]
		FROM [dbControlFlota].[dbo].[CalcAceiInforme]
		WHERE (@año IS NULL OR @año=YEAR(fecha_informe))
		AND (@mes IS NULL OR @mes=MONTH(fecha_informe))
		AND (@componente IS NULL OR @componente=componente)
		AND estado_solicitud='Pendiente'
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Mauro
Val: 2.761
Oro
Ha aumentado 1 puesto en PHP (en relación al último mes)
Gráfica de PHP

Uso de funciones de tabla con PHP

Publicado por Mauro (1036 intervenciones) el 30/03/2021 14:47:46
¿Por qué usás una función en lugar de una view?
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil
Val: 393
Ha mantenido su posición en PHP (en relación al último mes)
Gráfica de PHP

Uso de funciones de tabla con PHP

Publicado por Jefferson (203 intervenciones) el 31/03/2021 04:32:08
Hola amigo

Ya probaste incluir el order by dentro de la función
Justo después del último AND

1
AND estado_solicitud='Pendiente' ORDER BY algo DESC, algo ASC

comenta
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil
Val: 126
Ha aumentado su posición en 12 puestos en PHP (en relación al último mes)
Gráfica de PHP

Uso de funciones de tabla con PHP

Publicado por German David (54 intervenciones) el 31/03/2021 16:07:21
Hola Mauro, porque la función de tabla me permite enviarle parámetros como @año, etc., lo cual utilizo como datos de entrada por el usuario en el sito web, ya que la vista no me permite darle parámetros dinámicos sino fijos o al menos eso creo
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil
Val: 126
Ha aumentado su posición en 12 puestos en PHP (en relación al último mes)
Gráfica de PHP

Uso de funciones de tabla con PHP

Publicado por German David (54 intervenciones) el 31/03/2021 16:08:36
Hola Jefferson, si ya probé y fue cuando salió el error:

Msg 1033, Level 15, State 1, Procedure fnTbCalcAceiInforPendientes, Line 78 [Batch Start Line 7]
The ORDER BY clause is invalid in views, inline functions, derived tables, subqueries, and common table expressions, unless TOP, OFFSET or FOR XML is also specified.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar