Jump to content


Aimberê Rocha Mendonça

Member Since 10/01/2008
Offline Last Active 25/08/2010, 10:26
-----

#952705 Cross Apply Não Funciona

Posted by Aimberê Rocha Mendonça on 08/01/2009, 16:27

Bom dia galera,

eu estou fazendo uma query no sqlServer 2005 professional, onde eu preciso correlacionar uma subquery a uma tabela derivada. Reza a lenda que com a instrução CROSS APPLY meu problema estaria resolvido. Mas como eu sou um cara sem sorte e que não se dá muito bem com o Transact-SQL. minha query não funcinou.


antes eu estava tentando fazer algo parecido com isso, é o que eu disse sobre derivar a relação entre as tabelas na subquery. Mas com isso eu estaria ultrapassando o escopo da subquery no sql server e gerando um erro para meu usuário final.

[codebox]select distinct sem
from X..view_B t
inner join X..view_A p on p.coluna_1 in (select coluna_1 from dbo.FUN_RETORNA_TURMAS_UNIFICADAS(t.coluna_1,default))
inner join Y..table_T tur on tur.coluna_1 in (select coluna_1 from dbo.FUN_RETORNA_TURMAS_UNIFICADAS(t.coluna_1,default))
inner join Y..table_TP tp on tp.coluna_1 in (select coluna_1 from dbo.FUN_RETORNA_TURMAS_UNIFICADAS(t.coluna_1,default))
where p.coluna_2 = @usu_int_cod and tp.coluna_3 = 'cr' and t.coluna_4 = 'cr'[/codebox]

Abaixo eu uso o Cross Applay que supostamente iria me ajudar com o problema, mas não resolveu em nada.
[codebox]select distinct tur.ano
from Y..view_B t
cross apply (
select coluna_1 from X.dbo.FUN_FORUM_RETORNA_table_TS_UNIFICADAS(t.coluna_1, default)
) as tu
inner join X..view_A p on t.coluna_1 in tu.coluna_1
inner join Y..table_T tur on tur.coluna_1 in tu.coluna_1
inner join Y..table_TP tp on tp.coluna_1 in tu.coluna_1
where p.coluna_2 = @usu_int_cod and tp.coluna_3 = 'cr' and t.coluna_4 = 'cr'[/codebox]


Enfim galera,
Eu podia estar matando, eu podia estar roubando, mas estou pedindo humildemente essa ajuda de vcs.
senão meu chefe vai me transformar numa flor e não seria nada agradável.


Valeu moçada :)

BOA TARDE GALERA,
Descobri qual que era o problema, era o nível de compatiblidade do banco de dados que estava atrapalhando .
As sitaxes estão certas, e deve funcionar no seu banco. Se não funcionar tente alterar o nível de compatibilidade do banco e dará certo.

para isso basta utilizar o comando

ALTER DATABASE Seu_Banco
SET COMPATIBILITY_LEVEL = 80 OU 90 OU 100


essa propriedade do banco serve para compatilizar o seu servidor com versões anteriores ou posteriores do MSSQL.


Para usar o APPLY é preciso alterar pelo menos para 90.


Uhuuuuuul


valeu moçada.


IPB Skin By Virteq