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.
Edição feita por: Aimberê Rocha Mendonça, 08/01/2009, 16:27.