Jump to content
Fórum Script Brasil
  • 0

Variável Local Recebendo Subquery


arnaldoborges
 Share

Question

Olá pessoal, bom dia!

Fiz várias buscas para encontrar uma "luz" para o meu problema, mas não encontrei nada.

Em compensação, encontrei o forum do Script Brasil com uma área destinada apenas para SQL Server, show!

Se alguém puder me ajudar fico extremamente agradecido. Bom, então vamos lá!

Possuo hoje no ambiente de produção a query abaixo, funcionando perfeitamente.

Para que vocês possam entender, a função dela é encontrar o "POST_ID" da tabela "WPTESTE...wp_postmeta", relacionado com o "CRS_CODE" da tabela "tabIntermed_CMS".

Mas se vocês perceberem, na subquery que atribiu valor para a variável "@post_id", eu estou utilizando um "TOP 1", para que ele atribua o primeiro valor encontrado.

Acontece que isso não é o ideal, pois eu posso ter vários "POST_ID" para o mesmo "CRS_CODE", só que claro, se eu retirar o TOP 1, ele vai me retornar erro dizendo que há mais de um valor. E se eu deixar este "TOP 1", perderei todos os demais "POST_ID" (pegarei apenas o primeiro). :wacko:

DECLARE @crs_code VARCHAR(20)
DECLARE CURS CURSOR read_only FOR 

  SELECT crs_code FROM tabIntermed_CMS 

OPEN CURS 

FETCH next FROM CURS INTO @crs_code

WHILE @@FETCH_STATUS = 0 
  BEGIN 
      DECLARE @post_id VARCHAR(20)
      SET @post_id = (
                        SELECT TOP 1 post_id FROM WPTESTE...wp_postmeta 
                        WHERE meta_key LIKE 'crs_code' AND meta_value LIKE @crs_code
                     )
      IF (@post_id <> '')
      PRINT @post_id
      FETCH next FROM CURS INTO @crs_code
  END 

CLOSE CURS 

DEALLOCATE CURS

Minha(s) dúvida(s) é(são) a(s) seguinte(s):

Qual a melhor forma de se fazer isso?

Vocês acreditam que eu vou precisar de outro cursor?

Como ficaria um cursor dentro de outro?

Não sei se deu pra entender a minha situação, se não deu, me avisem que eu explico de outra forma. ^_^

Desde já, fico muitíssimo agradecido pela atenção!

Grande abraço,

Arnaldo.

Edited by arnaldoborges
Link to comment
Share on other sites

2 answers to this question

Recommended Posts

  • 0

Buenas Pessoal,

Queimando alguns neurônios, fiz uma gabiarrinha que parece atender as expectativas:

DECLARE @crs_code VARCHAR(20) 
DECLARE curs CURSOR read_only FOR 
  SELECT crs_code 
  FROM   tabintermed_cms 

OPEN curs 

FETCH next FROM curs INTO @crs_code 

WHILE @@FETCH_STATUS = 0 
  BEGIN 
      DECLARE @post_id VARCHAR(20) 

      SELECT @post_id = Min(post_id) 
      FROM   wpteste...wp_postmeta 
      WHERE  meta_key LIKE 'crs_code' 
             AND meta_value LIKE @crs_code 

      WHILE @post_id IS NOT NULL 
        BEGIN 
            SELECT DISTINCT( post_id ) 
            FROM   wpteste...wp_postmeta 
            WHERE  post_id = @post_id 
                   AND meta_key LIKE 'crs_code' 
                   AND meta_value LIKE @crs_code 

            SELECT @post_id = Min(post_id) 
            FROM   wpteste...wp_postmeta 
            WHERE  post_id > @post_id 
                   AND meta_key LIKE 'crs_code' 
                   AND meta_value LIKE @crs_code 

            IF ( @post_id <> '' ) 
              PRINT @post_id 
        END 

      FETCH next FROM curs INTO @crs_code 
  END 

CLOSE curs 

DEALLOCATE curs

Alguém tem uma ideia melhor?

[]'s!

Link to comment
Share on other sites

  • 0

Boa tarde Arnaldo,

Uma idéia seria fazer uma temporária para armazenar todos os POST_ID que deseja pesquisar. É praticamente a mesma coisa que fez, mas com a temporária creio que a implementação fique mais fácil de dar manutenção e de entender.... :)

Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Answer this question...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

 Share



  • Forum Statistics

    • Total Topics
      150.8k
    • Total Posts
      648.8k
×
×
  • Create New...