Bom, abaixo separei algumas instruções SQL que muitos programadores tem dúvidas de como usá-las e que facilitam muitas tarefas.
1) INSERT de SELECT: Fazer inserções em uma tabela puxando dados de outra(s)
Bem parecido com o SELECT INTO porém você pode fazer várias manipulações conforme desejar usando um simples SELECT. No caso vou mostrar um exemplo bem fácil: irei adicionar vários Alunos numa tabela sendo que os dados estão em outra tabela (Cadastros), logo minha instrução ficaria assim:
INSERT INTO Alunos (nome, email) SELECT nome, email FROM Cadastros
O nome dos campos não precisam serem iguais, basta estar na mesma ordem e respeitar o tipo de dados (tamanho também).
2) UPDATE relacionado com outra tabela
Nessa situação o que desejamos é fazer um UPDATE na tabela sendo que é preciso fazer um JOIN com outra tabela. No nosso exemplo: desejamos alterar o preco de um produto sendo que o valor do mesmo está relacionado com seu tipo e ele está armazenado em outra tabela. Logo podemos usar a seguinte instrução:
UPDATE Produto SET preco = T.preco FROM Produto AS P, Tipo AS T WHERE P.Id_Tipo = T.Id
Meio complicado quando se vê, né? Mas se você reparar detalhadamente verá que a atualização do preço é feita, para cada produto, quando o Id_Tipo (da tabela Produto) for igual ao Id (da tabela Tipo) obtendo assim o preco (da tabela Tipo).
3) Remover registros duplicados deixando apenas um
A explicação desse objetivo é bem óbvia: remover registros duplicados em uma determinada tabela sob,algum critério. Porém, sua sintaxe é mais complicada, mas vamos lá... Para nosso exemplo iremos remover os registros duplicados (ou mais que um) de e-mails deixando apenas um na tabela Mailing:
;WITH Listagem(email, ranking)
AS
(
SELECT email
,ranking = DENSE_RANK() OVER(PARTITION BY email ORDER BY NEWID() ASC)
FROM Mailing WITH (NOLOCK) WHERE email IS NOT NULL
)
DELETE Listagem WHERE ranking > 1
Esse emaranhado de instruções se resume em gerar um ranking indicando quantas vezes o registro se repete. Esse ranking é armazenado em uma tabela "temporária" (tabela Listagem) com referência à original (tabela Mailing)... Logo que é gerado o ranking, é feita a exclusão dos registros que possuem ranking maior que 1, ou seja, apaga todos aqueles que estão se repetindo deixando apenas um deles.
Bem, é isso! Espero ter ajudado... Lembrando que os exemplos acima foram os mais simples e vocês podem encontrar situações semelhantes ou piores mas que, usando-os, podem ajudar a chegar na resolução.
0 comentários:
Postar um comentário