valued valores tipos tabla outer linea inner funciones ejemplos cross con sql-server function tsql sql-function

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