-
Posts
146 -
Cadastrado em
-
Última visita
Tipo de conteúdo
Artigos
Selos
Fabricantes
Livros
Cursos
Análises
Fórum
Tudo que Erciley Junior postou
-
Exercício Banco de Dados Mysql
Erciley Junior respondeu ao tópico de ben hur em Web e banco de dados
Olá. Você só fez o trecho para inclusão dos itens do pedido, ok, só acho que está errado o campo QUANTIDADE estar declarado como um parâmetro VARCHAR. Declare-o com o mesmo tipo que o campo Qtde da tabela PedidoItem. - não foi isso que você perguntou, mas.... Quanto aos campos que estão sendo gravados com NULL, é porque você não especificou eles no seu INSERT, você terá que fazer: - Na opção de Inclusão, fazer um SELECT na tabela PRODUTOS para obter o PREÇO_DO_PRODUTO e armazenar em uma variável, após isto, usar essa variável para gravar o campo PedItemPreco, e o campo PedItemTotal, gravar com a multiplicação dessa variável pelo parâmetro Quantidade. - ESTOU CHUTANDO QUE A INFORMAÇÃO DO PREÇO DO PRODUTO ESTEJA NA TABELA PRODUTOS, VERIFIQUE. Para a inclusão da tabela Pedido, é só fazer basicamente igual fez com a tabela de PedidoItem, não tem segredo nenhum. Use o comando "DESC <nome_tabela>" para ver a estrutura da tabela e gravar os campos pertinentes. -
Agrupar tabelas em uma única
Erciley Junior respondeu ao tópico de Felipe Sachetti em Web e banco de dados
@Felipe Sachetti Tabela de log em mysql. Cerca de 10 mil registros diários, sendo que há datas com mais de 40 mil registros. Hoje a tabela está com mais de 5 milhões de registros. (5 milhões pois temos rotinas para mover os arquivos "mortos" para uma outra tabela de tempos em tempos) No seu caso, pensando melhor e levando em conta o que o amigo acima disse, o seu grande problema será o tamanho físico no HD que essa tabela acabará gerando, devido aos inúmeros campos que sempre serão gravados em branco devido pertencerem a outras tabelas. A não ser que você faça uma análise nesse sentido, e verifique: - Se o default dos campos for NULL, eles criam tanto espaço desnecessário no HD? Caso não, não há problema, mas criar campos com default NULL pode gerar problemas em suas consultas também, seria mais uma preocupação. -
Victor, você está criando um ALIAS para a tabela, com o próprio nome dela. Isso ao meu ver é totalmente desnecessário, não existe essa obrigatoriedade e no fim das contas, isso mais atrapalha doq ajuda.
-
Agrupar tabelas em uma única
Erciley Junior respondeu ao tópico de Felipe Sachetti em Web e banco de dados
Não vejo grandes problemas nisso, desde que haja a indexação adequada para não tornar nenhuma pesquisa lenta. Nesse caso, seu índice mais básico seria pelos campos TIPO (que será criado) + NRO_MOVIMENTO (que é o número da nota de venda, entrada, etc...) Para a tabela de itens, terá que ter este mesmo índice só que com um terceiro campo, que seria o número do item (coisa básica). Não vejo problemas nisso. Não entro na questão de formalização e etc pois "não vem ao caso". Digo que não há problema com base em uma tabela de log que trabalhamos, que tem basicamente o mesmo conceito, e com certeza seu caso terá muito menos dados a serem consultados. -
Ajuda nessa agregração com SUM
Erciley Junior respondeu ao tópico de fdsmello em Web e banco de dados
Concordo DIF, não há nada de errado, só não acho "legal" por assim dizer, bem como alguns colocam condições secundárias no JOIN, e outros preferem fazer isso no where... frescuras a parte. E quanto ao INNER JOIN, ele funciona perfeitamente em MYISAM também. (só conheço innodb e myisam, então quanto a outros engines não posso afirmar) -
Ajuda nessa agregração com SUM
Erciley Junior respondeu ao tópico de fdsmello em Web e banco de dados
Olá, tente assim SELECT nome_editora, sum(qtdlivros)-- conta o valor totalFrom Editora AS EINNER JOIN Livro AS L ON E.cod_editora = L.cod_editoraGroup By nome_editora -
Ajuda nessa agregração com SUM
Erciley Junior respondeu ao tópico de fdsmello em Web e banco de dados
Caso ninguém responda depois eu vejo com mais tempo e respondo.... Só sei que esse FROM com várias tabelas, eu daria um soco em quem fizesse isso aqui na empresa ^^ Use LEFT JOIN, INNER JOIN, etc... ^^ -
Já resolveu? Pelo que testei, esse código retornará o que precisa SELECT * FROM (SELECT CODIGO,DESCRICAO,COD2,MIN(SEM_ENGATE) AS SEM_ENGATE FROM veiculoLEFT OUTER JOIN (SELECT CODIGO_VINCULO AS COD2,DESENGATADO AS SEM_ENGATE FROM veiculo WHERE TIPO = 2) AS S1 ON COD2 = CODIGOWHERE TIPO = 1GROUP BY CODIGO) AS S1 WHERE COD2 IS NULL OR SEM_ENGATE = 1; Lembrando que fiz em mysql, então talvez precise de um ajuste nas colunas retornadas devido ao GROUP BY (já que o mysql retorna colunas que não estão no group by e que não usam função de agrupamento, e o sql server não (e talvez o postgree tb não)) Em SQLSERVER funcionou assim: CREATE TABLE veiculo ( codigo integer, tipo character(1), descricao character varying(50), codigo_vinculo integer, desengatado int, constraint pk_veiculo PRIMARY KEY (codigo), constraint fk_veiculo_vinculo FOREIGN KEY (codigo_vinculo) REFERENCES veiculo (codigo)); INSERT INTO veiculo (codigo, tipo, descricao, codigo_vinculo, desengatado) VALUES (1, '1', 'CAVALO 1', NULL, NULL);INSERT INTO veiculo (codigo, tipo, descricao, codigo_vinculo, desengatado) VALUES (2, '1', 'CAVALO 2', NULL, NULL);INSERT INTO veiculo (codigo, tipo, descricao, codigo_vinculo, desengatado) VALUES (3, '1', 'CAVALO 3', NULL, NULL);INSERT INTO veiculo (codigo, tipo, descricao, codigo_vinculo, desengatado) VALUES (8, '1', 'CAVALO 4', NULL, NULL); INSERT INTO veiculo (codigo, tipo, descricao, codigo_vinculo, desengatado) VALUES (4, '2', 'CARRETA 1', NULL, 0);INSERT INTO veiculo (codigo, tipo, descricao, codigo_vinculo, desengatado) VALUES (5, '2', 'CARRETA 2', 1, 1);INSERT INTO veiculo (codigo, tipo, descricao, codigo_vinculo, desengatado) VALUES (6, '2', 'CARRETA 3', 2, 0);INSERT INTO veiculo (codigo, tipo, descricao, codigo_vinculo, desengatado) VALUES (7, '2', 'CARRETA 4', 1, 0);INSERT INTO veiculo (codigo, tipo, descricao, codigo_vinculo, desengatado) VALUES (9, '2', 'CARRETA 5', 8, 1);INSERT INTO veiculo (codigo, tipo, descricao, codigo_vinculo, desengatado) VALUES (10, '2', 'CARRETA 6', 8, 1); SELECT COD ,DESCRICAO FROM ( SELECT CODIGO AS COD ,COD2 ,MIN(SEM_ENGATE) AS SEM_ENGATE FROM veiculo LEFT OUTER JOIN ( SELECT CODIGO_VINCULO AS COD2 ,DESENGATADO AS SEM_ENGATE FROM veiculo WHERE TIPO = 2 ) AS S1 ON COD2 = CODIGO WHERE TIPO = 1 GROUP BY CODIGO,COD2 ) AS S1INNER JOIN veiculo ON CODIGO = CODWHERE COD2 IS NULL OR SEM_ENGATE = 1;
-
Olá ^^ tabela auto incremento deve ter índice, e esse seu problema. Tente assim: create table ingrediente( cod_receita integer not null, seq_ingrediente integer not null auto_increment, descricao varchar(500), quantidade integer, unidade integer, key seu_indice(seq_ingrediente), foreign key (cod_receita) references receita(cod_receita), primary key(cod_receita, seq_ingrediente));
-
Olá, acho que tem 2 erros: 1 - O nome da coluna é o mesmo nome da tabela lida 2 - Está tentando usar um nome criado "em tempo de execução" como falo, em uma condição where Pro primeiro problema, não tem nem o que falar, mude o nome da coluna Pro segundo problema, tem duas soluções fazer novamente o CONCAT no WHERE ou fazer um select externo, e nesse select externo você aplicaria o where forma 01 select concat(manufacturer.name, ' ', model.name) as model_001 from manufacturer, model where manufacturer.id = model.manufacturer_id and concat(manufacturer.name, ' ', model.name) like '%gol%' forma 02 select * from (select concat(manufacturer.name, ' ', model.name) as model_001 from manufacturer, model where manufacturer.id = model.manufacturer_id ) as s1WHERE model_001 like '%gol%'
-
Banco de dados caseiro para estudo
Erciley Junior respondeu ao tópico de Samz em Web e banco de dados
Olá, eu recomendaria você instalar e mexer no mysql, é só baixar esse pacotão, ir dando next em tudo basicamente, e boa vai ser instalado o workbench, mas é legal você iniciar pelo prompt para ir desbravando ^^ http://dev.mysql.com/downloads/file.php?id=451577 Mas...... pelo que vejo de anúncios de emprego, se fosse você, tentaria me mexer com sql server ou oracle. -
Olá Caguera. Qual o seu problema específico com Function? Não dá para falar quais funções você precisa com base nas tabelas e dados que você possui, acredito que não existe nenhuma norma quanto a isso, por isso digo que você cria com base em suas necessidades. Essa function que você fez, está estranha. Você está passando como parâmetro o valor do salário, e está somando o salário de todo mundo que recebe exatamente o que foi passado por parâmetro. O certo seria: Passar por parâmetro o código do funcionário, e obter o salário dele. O que significa esse trecho? .. IN Funcionario.Salario%type..
-
criar tabela com procedure no sql server
Erciley Junior respondeu ao tópico de laercionb em Web e banco de dados
Olá, pesquise sobre PREPARE STATEMENT, é isso que você precisa: Segue um exemplo de como usar: SET @QUERY := CONCAT("CREATE TABLE TESTE","_123","(A INT)");PREPARE stmt FROM @QUERY;EXECUTE stmt;DEALLOCATE PREPARE stmt; -
Esqueci a senha do mysql
Erciley Junior respondeu ao tópico de Carlos Barauna em Web e banco de dados
Certo, apesar de crer que não há diferença quanto a isso, mas pela forma que você fala, acredito que já tenha confirmado sua afirmação, neste caso me desculpo. Abraço. -
Esqueci a senha do mysql
Erciley Junior respondeu ao tópico de Carlos Barauna em Web e banco de dados
Não deu certo desinstalando o mysql, e instalando ele novamente definindo uma nova senha? DIF, o comando mysqladmin para alterar senha, você deve saber a senha anterior para conseguir realizar isso, por isso acho que não dará certo (falando em windows) mysqladmin -u root -p password "teste" -h localhost- após isso você digitará a senha ou já especifica no comando -
Esqueci a senha do mysql
Erciley Junior respondeu ao tópico de Carlos Barauna em Web e banco de dados
Oi Carlos, tinha respondido mas apaguei, pois fazia tempo, e só agora remexendo e-mail lembrei como resolvi esse problema... Tentei resetar senha e tudo mais, usando as formas abaixo, mas não funcionou, talvez devido a versão do MySQL (talvez versões mais antigas esse método possa funcionar). Esse método abaixo, você para o serviço, inicia ele passando uns parâmetros, entra na base de dados sem usar senha, mas as alterações parecem que ocorrem em um ambiente virtual, e não se aplica a base real quando você volta a usá-la pra valer. Bom, chega de falação..... só consegui resolver isso instalando o mysql novamente. Faça um backup dos seus dados, copiando os arquivos físicos, apenas por garantia, após isso, instale o mysql novamente, por cima do já existente. Para saber onde ficam os dados físicos, você pode fazer "SELECT @@datadir". Para fazer esse SELECT, você poderia logar da forma abaixo, sem senha.. RESETAR SENHA DO ROOT SENHA ROOT FORMA 1: 01-CRIAR AQUIVO TEXTO COM O CONTEÚDO ABAIXO mysql-init.txt = linha1:UPDATE mysql.user SET Password=PASSWORD('MyNewPass') WHERE User='root'; linha2:FLUSH PRIVILEGES; 02-mysqld --skip-grant-tables --defaults-file="C:\\ProgramData\\MySQL\\MySQL Server 5.6\\my.ini" --init-file="C:\\mysql-init.txt" 03-parar processo mysqld.exe FORMA 2: 01-abrir DOS 02-executar na pasta do mysql: mysqld --skip-grant-tables --defaults-file="C:\\ProgramData\\MySQL\\MySQL Server 5.6\\my.ini" --init-file="C:\\mysql-init.txt" 03-dos vai ficar travado com o serviço 04-abrir nova janela do DOS 05-executar na pasta do mysql: mysql -u root 06-use mysql; 07-UPDATE mysql.user SET Password=PASSWORD('MyNewPass') WHERE User='root'; 08-FLUSH PRIVILEGES; 09-quit; 10-parar processo mysqld.exe Essa é uma anotação antiga minha, se não entender ou não der certo, me avise que lhe explico, é fácil (pelo menos no windows) -
Diferença nos valores da consulta
Erciley Junior respondeu ao tópico de okeu em Web e banco de dados
Hmmmmmm, bug do milênio então, hehehe Bom, muito estranho isso, nem sei o que falar, principalmente pois não conheço esse TERADATA. Existe uma empresa q se chama TERADATA, eu conclui q é dela esse software q você usa, e os programas deles são voltados para isso, espero não ter errado, hehehe http://pt.wikipedia.org/wiki/Teradata -
Diferença nos valores da consulta
Erciley Junior respondeu ao tópico de okeu em Web e banco de dados
Olá Okeu, bom, vendo melhor e pensando que essa vírgula é apenas uma máscara para o campo valor, não há erro algum. Pois veja: O campo é DECIMAL( 09 , 03).... ou seja, 9 inteiros e 3 decimais O select do campo sem cast, retorna com 3 zeros a direita, está correto, pois são as casas decimais Usando o CAST FLOAT(09), você define a coluna como não havendo casas decimais, aí retorna sem as casas decimais, totalmente certo também. Agora se em uma versão anterior não exibia com as casas decimais quando estas estivessem zeradas, talvez seja isso que você falou, questão de configurar. Vi que esta é uma ferramenta de Data Warehouse, infelizmente não conheço este produto. -
Diferença nos valores da consulta
Erciley Junior respondeu ao tópico de okeu em Web e banco de dados
Olha, não sei se é MySQL ou o que, mas baseando por isso (e talvez seja esse o caso) o ponto decimal usado em linguagens de programação e linguagens de banco de dados, é o PONTO "." e não a vírgula "," Não sei o porque sua consulta retornou virgula como ponto decimal, talvez isso tenha afetado o CAST tente: SELECT ITEM_CUBE_QTY ,CAST( REPLACE( CAST( ITEM_CUBE_QTY AS CHAR ) , ',' , '.' ) AS DECIMAL ) AS ITEM FROM britem.item WHERE item_nbr = 100141 -
VisualG, Inversão de Vetores !!
Erciley Junior respondeu ao tópico de jambobo em Programação - iniciantes
olá, você já armazenou em um vetor cada caracter correto? agora é só ler ele ao contrário, e ir jogando cada posição em uma variável caracter para ler ao contrário o vetor, é só você fazer o LAÇO DE REPETIÇÃO iniciando com tamanho do VETOR até 1 ou seja LAÇO inicia em LEN(vetor) ATÉ 1 STEP -1 FIM DO LAÇO
Sobre o Clube do Hardware
No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas comunidades sobre tecnologia do Brasil. Leia mais
Direitos autorais
Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais