
fulvio
Moderadores-
Total de itens
1.218 -
Registro em
-
Última visita
Tudo que fulvio postou
-
Boa tarde Eduardo, Seria assim? select T3.PEDIDO "NºPEDIDO", sum(T1.VALOR) AS "VOLUME TOTAL", T3.DATA_PEDIDO AS "DATA" FROM TB_AJUSTE T1 INNER JOIN TB_LOGISTICA T2 ON T1.CD_MAT = T2.CD_MAT INNER JOIN TB_PEDIDO T3 ON T2.PEDIDO = T3.PEDIDO AND T3.ID_FISCAL = '2' OR T3.DATA_PEDIDO BETWEEN '2010-08-01' AND '2010-09-30' GROUP BY T3.PEDIDO, T3.DATA_PEDIDO
-
Boa tarde D.Wirti, O left/right só funcionará se o relacionamento for com a tabela que possui as descrições do segmento. Desta forma, para a "Cidade A" apareceria todas os segmentos, com os zeros nos que não houvessem segmentos.
-
Bom dia Jonas, Em que sentido você quer organizar os códigos? Na sequencia que colocou, está em ordem crescente (pois deletou o intervalo de 3 a 6). Se não for por causa de performance, para que queria organizar o código fisicamente? Quando se faz um select, você pode utilizar o "order by" para ordenação (visualmente). Caso queira fazer a organização fisicamente, terá que fazer a coluna cluster. Mas cuidado, pois dependendo da pesquisa utilizada, a performance cai.
-
Boa tarde Denis, A sintaxe da inserção está ok. Se o aplicativo está fechando, pode ser um erro e o fonte não possui um tratamento. Se já existir o CODIEN de número 72, dará erro de PK. você pode incrementar a variável que contém o número do CODIEN, no próprio script do sql. Ficaria assim (no lugar do 72, coloca-se a variável): INSERT INTO RODIEN (CODIEN,TIPDOC,FILDOC,SERDOC,CODDOC,PATHFO,DATATU,USUATU) VALUES (72+1,'CTR',1,'U',367090,'CTRC_367090.jpg',40449,'DENIS')
-
Bom dia Rodrigo, Neste caso você terá que criar uma temporária, inserir o resultado do select nesta temporária e depois utilizar a estrutura de loop que postei acima.
-
Bom dia NIK, A sua estrutura está ok... apenas a variável @PASSO não está sendo utilizada. Como o erro é esporádico, o que pode estar ocorrendo pode estar relacionado com a estrutura de tratamento de erro. A sintaxe GOTO não é muito recomendada... rs. Prefira sempre utilizar o TRY/CATCH (igual a estrutura de OO). Mude a estrutura retirando o GOTO e colocando TRY/CATCH. O erro pode estar aparecendo em decorrência do "pulo" que o sql utiliza na sintaxe do GOTO. A execução pode entrar em um bloco com BEGIN, depois de um erro, ir para o tratamento de erro e o sql não encontrar nenhum END para fechar o bloco.
-
Bom dia Rodrigo, Neste caso, não há necessidade de se criar um Cursor. Um While resolve o problema. Segue abaixo um exemplo: -- criação de tabela temporária CREATE TABLE #Nomes (Valor INT, Nome VARCHAR(50)) -- Inserção dos dados INSERT INTO #Nomes VALUES (1, 'jose') INSERT INTO #Nomes VALUES (2, 'joao') INSERT INTO #Nomes VALUES (4, 'maria') INSERT INTO #Nomes VALUES (5, 'juca') INSERT INTO #Nomes VALUES (6, 'pedro') INSERT INTO #Nomes VALUES (9, 'marta') INSERT INTO #Nomes VALUES (10, 'fulano') -- Selecionar todo o script, até o final. Executar. DECLARE @Contador INT SET @Contador = 1 WHILE @contador < (SELECT MAX (valor) FROM #Nomes) BEGIN IF (SELECT top 1 1 FROM #Nomes WHERE valor=@Contador) IS NULL INSERT INTO #Nomes VALUES (@Contador, '') SET @Contador = @Contador + 1 END -- Conferência SELECT * FROM #Nomes
-
Bom dia Edipo, Uma dica: Ao utilizar a cláusula OR, você onera significativamente a performance do Banco. Fazendo pesquisa em string, ficará ainda pior. Se sua tabela tiver muita concorrência e/ou muitos registros, provavelmente terá problemas de performance.
-
(Resolvido) Somar Qtd de Venda + Troca_Saida de Produtos Por Clientes
pergunta respondeu ao Braulio Ribeiro de fulvio em SQL Server
Bom dia Braulio, Foi no seu post que coloquei uma obs sobre o SUM... rs: "Outra coisa importante que dá um trabalho feio: quando se utiliza o Left/right Join, os relacionamento vão se exponencializando... ao utilizar a função SUM, torna-se muito dificil ter uma soma "adequada". Uma dica interessante é utilizar o SUM mais simples possível." O seu agrupamento está sendo duplicado por causa da coluna IdProduto. Os ID´s devem ser iguais para que o sql agrupe as informações. Caso sejam diferentes (no seu caso deve ser chave), não haverá agrupamento. Tente fazer uma soma simples. De preferância com apenas a coluna que deseja somar. Depois que o resultado der certo, vá implementando os demais campos. -
Boa tarde Edipo, você pode criar uma variável do tipo string, testar os valores das variáveis atribuindo a cláusula que desejar, e depois concatenar sua string com o select. Assim você montará seu select de acordo com a navegação do usuário. Se eu fosse fazer, preferiria fazer um select para cada cláusula. Fica maior, mas o código fica mais legível. Não é uma boa prática de programação criar string e depois realizar concatenações em selects. Mas caso não tenha jeito... rs. É uma opção válida!!! :.)
-
Bom dia Arldin, Dê uma olhada neste tópico. É uma video-aula da ferramenta. http://msdn.microsoft.com/pt-br/beginner/bb964635.aspx Moverei seu post para outro Forum.
-
Eliminar Dados repetidos usando CURSOR
pergunta respondeu ao Marcelo Cavalcanti de fulvio em SQL Server
Boa tarde Marcelo, Prefira utilizar um loop normal. O cursor gasta mais... rs. Segue um exemplo utilizando um WHILE. declare @manter int; declare @eliminar int; set @manter = 80591; set @eliminar = 202828; --- WHILE -- Aqui você colocar a cláusula. Pode-se criar uma variavel de controle. BEGIN update vendas_pagDinheiro set clienteKey = @manter where clienteKey = @eliminar; update vendas_pagCheque set clienteKey = @manter where clienteKey = @eliminar; update vendas_pagCartao set clienteKey = @manter where clienteKey = @eliminar; update vendas_pagFuncionario set pessoaKey = @manter where pessoaKey = @eliminar; update vendas_pagOutros set pessoaKey = @manter where pessoaKey = @eliminar; update vendas.boletos set clienteKey = @manter where clienteKey = @eliminar; update vendas_orcamento set clienteKey = @manter where clienteKey = @eliminar; update vendas_orcamento set vendedorKey = @manter where vendedorKey = @eliminar; delete from clientes.lojasLiberadas where clienteKey = @eliminar delete from pessoa.funcionario where pessoaKey = @eliminar; delete from pessoa.biometria where pessoaKey = @eliminar delete from tbendereco where pessoaKey = @eliminar; delete from tbTelefone where pessoaKey = @eliminar; delete from cliente_dados where clienteKey = @eliminar; -- Aqui você incrementa o controle. END -
Pesquisar usando IN a partir de campo de outra tabela
pergunta respondeu ao brgomes de fulvio em SQL Server
você terá que passar um string e comparar com um inteiro... desta forma não dá. -
Pesquisar usando IN a partir de campo de outra tabela
pergunta respondeu ao brgomes de fulvio em SQL Server
Rs... boa tarde Amigo. Acabei de responder uma dúvida exatamente deste tipo... rs. Segue o link: http://scriptbrasil.com.br/forum/index.php...mp;#entry606412 -
Boa tarde Rickardo, Provavelmente o campo ID_SubProduto está como inteiro... Aí vai dar erro de conversão de tipo. Se você declarar a variável @id_subProduto como inteira, aí não coseguirá passar mais de um valor separado por vírgula... rs. Neste caso, este tipo de implementação não funciona. Fiz uma bem parecida. Espero que a idéia ajude: fui concatenando os números que precisa, separando-os por "|". Na procedure, pegava a string e fazia um loop para separar os números. Depois utilizava...
-
Pode ser por causa da versão. Vou mover seu tópico para outro Forum. Eles poderão lhe ajudar melhor. :.)
-
- Abrir Management Studio - Object Explorer - Abrir árvore do Servidor / Security / Logins.
-
Boa tarde Amigo, Não entendi quando fala "abrir uma database MDF"... você está tentando fazer um Attach? Está tentando fazer dentro do Management?
-
Bom dia Braulio, Verifique as permissões do usuário que está logando. Se não for, coloque-o como sysadmin.
-
Por nada... rs. Precisando estamos ai!!! :.)
-
Dá para fazer um delete cascade da tabela TAB_CATEGORIAS para a tabela TAB_PRODUTOS. O problema seria se uma PK da TAB_CATEGORIAS referenciasse uma coluna dela mesma. Dá para fazer a referência, mas não pode ser cascade.... Fiz um script abaixo. Se quiser utilizar as tabelas como temporárias, basta colocar uma # antes do nome da tabela, quando for criá-la. Dê uma olhada se é isto: create table TAB_CATEGORIAS ( ID_CATEGORIA INT IDENTITY, ID_PARENT INT, NOME VARCHAR(100) constraint PK_CATEGORIAS primary key (ID_CATEGORIA) ); create table TAB_PRODUTOS ( ID_PRODUTO INT IDENTITY, ID_CATEGORIA INT NOT NULL, NOME VARCHAR(100), constraint PK_PRODUTOS primary key (ID_PRODUTO) ); alter table TAB_PRODUTOS add constraint FK_CATEGORIA foreign key (ID_CATEGORIA) references TAB_CATEGORIAS (ID_CATEGORIA) on delete cascade insert into TAB_CATEGORIAS (id_parent, nome) values (1, 'Teste1') insert into TAB_CATEGORIAS (id_parent, nome) values (2, 'Teste2') insert into TAB_CATEGORIAS (id_parent, nome) values (3, 'Teste3') insert into TAB_PRODUTOS (id_categoria, nome) values (1, 'Categoria1') insert into TAB_PRODUTOS (id_categoria, nome) values (1, 'Categoria2') insert into TAB_PRODUTOS (id_categoria, nome) values (1, 'Categoria3') insert into TAB_PRODUTOS (id_categoria, nome) values (2, 'Categoria4') select * from TAB_CATEGORIAS select * from TAB_PRODUTOS delete from TAB_CATEGORIAS where id_categoria=1 select * from TAB_CATEGORIAS select * from TAB_PRODUTOS
-
Mas no 1º post, o cascade estava referenciando a mesma tabela... na trigger que está criando, o delete está na tabela "TAB_PRODUTOS". Quando rodou o script no 2008, não colocou a constraint na tabela "TAB_PRODUTOS" não? Script da trigger: CREATE TRIGGER TG_ApagaProduto ON CATEGORIAS FOR DELETE AS DECLARE @ID_CATEGORIA INT Set @ID_CATEGORIA = (SELECT ID_CATEGORIA FROM deleted) DELETE FROM CATEGORIAS WHERE ID_CATEGORIA = @ID_CATEGORIA GO
-
inserir dados no banco atraves de formularios
pergunta respondeu ao Robson Dias de fulvio em SQL Server
Faça o seguinte: pegue exatamente o script montado pelo PHP (no momento da execução), copie e cole no SQL. Abra uma instância do SQL e rode na mão a instrução. Verifique se a inserção está ok.... :.) -
Boa tarde Orlando, Estranho é que, de acordo com a documentação do 2008, quando possui referências circulares o cascade não é aceito. Abaixo segue a parte da documentação: "As séries de ações referenciais em cascata disparadas por uma única DELETE ou UPDATE devem formar uma árvore que não contenha referências circulares. Nenhuma tabela pode aparecer mais de uma vez na lista com todas as ações referenciais em cascata que resultem de DELETE ou UPDATE. Da mesma forma, a árvore de ações referenciais em cascata não precisa ter mais que um caminho para nenhuma tabela especificada. Toda ramificação da árvore termina quando encontra a tabela para a qual NO ACTION foi especificada ou é padrão." link: http://msdn.microsoft.com/pt-br/library/ms186973.aspx
-
inserir dados no banco atraves de formularios
pergunta respondeu ao Robson Dias de fulvio em SQL Server
Boa tarde Robson, Se o auto incremento é preenchido, quer dizer que o comando está sendo executado... Dê uma olhada nos valores passados no script para execução.