Ir para conteúdo
Fórum Script Brasil
  • 0

Problema com select


Guest Gustavo Bastos Andrade

Pergunta

Guest Gustavo Bastos Andrade

Bom dia a todos !

eu tenho duas tabelas no sql , a primeira tem uma coluna no qual é um identificador e a outra lista um ou mais identificadores para segunda tabela.

eu preciso criar uma stored procedure ou funcao que :

1. selecione o emailID da primeira tabela 2. dar um 'split' no campo emailid da primeira tabela e de acordo com o emailID selecionar o emailadress da segunda tabela.

ID EmailID

-- ----------

1 100

2 101,102,103,104

3 105,106

EmailID EmailAddress

--------- ------------------

100 address100@email.com

101 address101@email.com

102 address102@email.com

103 address103@email.com

104 address104@email.com

105 address105@email.com

106 address106@email.com

Link para o comentário
Compartilhar em outros sites

1 resposta a esta questão

Posts Recomendados

  • 0

Acho que o script abaixo pode dar uma luz:

DECLARE @EMAILID VARCHAR(200), @DELIMITADOR    VARCHAR(2), @AUX VARCHAR(200)      

--DEFINE QUE VAI SER O DELIMITADOR
SET         @DELIMITADOR = ',' 

DECLARE @TAB1 TABLE (ID INT, EMAILID VARCHAR(200))

INSERT INTO @TAB1 (ID,EMAILID) VALUES (1,'100')
INSERT INTO @TAB1 (ID,EMAILID) VALUES (2,'101,102,103,104')
INSERT INTO @TAB1 (ID,EMAILID) VALUES (3,'105,106')

DECLARE @TAB2 TABLE (EMAILID VARCHAR(200), EMAILADDRESS VARCHAR(200))

INSERT INTO @TAB2 (EMAILID,EMAILADDRESS) VALUES (100,'ADDRESS100@EMAIL.COM')
INSERT INTO @TAB2 (EMAILID,EMAILADDRESS) VALUES (101,'ADDRESS101@EMAIL.COM')
INSERT INTO @TAB2 (EMAILID,EMAILADDRESS) VALUES (102,'ADDRESS102@EMAIL.COM')
INSERT INTO @TAB2 (EMAILID,EMAILADDRESS) VALUES (103,'ADDRESS103@EMAIL.COM')
INSERT INTO @TAB2 (EMAILID,EMAILADDRESS) VALUES (104,'ADDRESS104@EMAIL.COM')
INSERT INTO @TAB2 (EMAILID,EMAILADDRESS) VALUES (105,'ADDRESS105@EMAIL.COM')
INSERT INTO @TAB2 (EMAILID,EMAILADDRESS) VALUES (105,'ADDRESS106@EMAIL.COM ')

DECLARE @RESULTADO TABLE (EMAILID VARCHAR(200))

DECLARE MYCURSOR CURSOR FOR 
SELECT EMAILID FROM @TAB1
OPEN MYCURSOR
    FETCH NEXT FROM MYCURSOR
    INTO @EMAILID
    WHILE @@FETCH_STATUS = 0
        BEGIN

                      IF LEN(@EMAILID) > 0     SET @EMAILID    = @EMAILID + @DELIMITADOR 
    
            IF (CHARINDEX(',',@EMAILID) = 0)
                BEGIN   
                 
                    INSERT INTO  @RESULTADO (EMAILID) VALUES (@EMAILID)
    
    
                END    
            ELSE
                BEGIN
                    
                    
                    
                    WHILE LEN(RTRIM(LTRIM(@EMAILID))) > 0
                        BEGIN
    
                                SET @EMAILID = RTRIM(LTRIM(@EMAILID))
    
                                SET @AUX =   SUBSTRING(@EMAILID, 1, (CHARINDEX(@DELIMITADOR, @EMAILID) - 1))
    
                                INSERT INTO  @RESULTADO (EMAILID) VALUES (@AUX)
    
                                
                                SELECT @EMAILID = SUBSTRING(@EMAILID, CHARINDEX(@DELIMITADOR, @EMAILID) + 1, LEN(RTRIM(LTRIM(@EMAILID))))
                     
                                            
                     
                        END  
                END 
    
        
            FETCH NEXT FROM MYCURSOR
            INTO @EMAILID
        END

    SELECT R.EMAILID,EMAILADDRESS 
    FROM @RESULTADO R, @TAB2 T2
    WHERE T2.EMAILID = R.EMAILID

    CLOSE MYCURSOR
    DEALLOCATE MYCURSOR

Podes transformá-lo em procedure ou função dependendo da vossa necessidade.

Fica ligado nos tipos dos campos.

Dúvidas? É só se manifestar!

Editado por jothaz
Link para o comentário
Compartilhar em outros sites

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,2k
    • Posts
      652k
×
×
  • Criar Novo...