sql-server - valores - outer apply sql server ejemplos
INNER JOIN con funciĆ³n de valores de tabla no funciona (4)
Tengo una función de tabla de valores que devuelve una tabla. Cuando intento JOIN
la función con valores de tabla con otra tabla, no obtengo ningún resultado, pero cuando copio el resultado de la función en una tabla real y hago la misma combinación, obtengo los resultados esperados.
La consulta se ve algo como esto:
Select *
From myTable
INNER JOIN fn_function(@parm1, @param2)
ON ....
Hasta ahora tengo alrededor de 4 consultas de este tipo y cada una tiene una función ligeramente diferente, pero todas las funciones producen la misma tabla pero datos diferentes. Para algunas de estas consultas, INNER JOIN
funciona, pero para otras no.
¿Alguna sugerencia de por qué sucede esto?
Con la función de tabla de valores, generalmente se utiliza la aplicación Cross Apply
.
Select *
From myTable m
CROSS APPLY fn_function(m.field1, m.field2)
Creo que esto debería funcionar
Select *
From Animals
Join dbo.AnimalsTypesIds(900343)
As AnimalsTypes
On AnimalsTypes.TypeId = Animals.TypeId
En la función de valor de tabla, la tabla de retorno debe tener TypeId para que la combinación funcione en esa cláusula
Si hicimos algunas suposiciones de que los parámetros de las funciones con valores de tabla no dependen dinámicamente de las columnas de myTable, esto funcionará.
SELECT *
FROM myTable
INNER JOIN
(SELECT * from fn_function(@para1, @para2 etc))
ON ...
pero si los parámetros dependen de myTable no funcionará
Su cláusula "ON" de la unión es probablemente incorrecta. Tal vez un pequeño error tipográfico como
ÚNETE x ON oID = odID
en lugar de
ÚNETE x ON oID = oID