Ir para conteúdo
Fórum Script Brasil

Denis Courcy

Moderadores
  • Total de itens

    3.089
  • Registro em

  • Última visita

Tudo que Denis Courcy postou

  1. SQLCourse.com Tutorial de SQL video tutoriais Busque no google. Tem muito mais.
  2. SELECT c.Codigo, c.Nome, COUNT(f.Numero) AS QT_FRETES FROM Clientes c INNER JOIN fretes f ON f.CodigoDestinatario = c.Codigo WHERE f.Data BETWEEN '2007-01-01' AND '2007-12-31' GROUP BY c.Codigo ORDER BY QT_FRETES DESC Você tem que estudar sql. Baixe alguns tutoriais e pratique com um banco de teste.
  3. Você pode instalar a versão "Community" (Free) no seu cliente. Clique no link para ver a diferença entre ela e a versão "Enterprise" (Paga):Generally Available (GA) release for production use
  4. O jeito que focê faz também é correto. Eu prefiro escrever explicitamente o INNER JOIN por uma questão didática. Por facilitar o entendimento, separando os comandos de forma correta.
  5. Italo, É quase isso. Segue o mesmo reciocínio do anterioir. SELECT c.clientes_nome AS 'CLIENTES' FROM clientes c INNER JOIN fretes f ON f.Codigo_Remetente = c.clientes_codigo WHERE clientes.clientes_codigo NOT IN (SELECT Codigo_Destinatario FROM fretes);
  6. Oi, Italo! Vamos por partes: Primeiro você quer saber o maior valor de frete. O comando é esse: SELECT MAX(fretes_valor) FROM fretes Segundo, você quer saber quais pessoas fizeram o frete mais caro. Juntando o que você fez com a dica que passei acima e dando uma pequena corrigida, temos:Select clientes.clientes_codigo, clientes.clientes_nome, fretes.Codigo_Remetente, fretes.fretes_valor AS 'MAIOR VALOR' FROM clientes INNER JOIN fretes ON fretes.Codigo_Remetente = clientes.clientes_codigo WHERE fretes.fretes_valor = (SELECT MAX(fretes_valor) FROM fretes); Se o volume de dados for grande, então haverá a necessidade de criar um índice pelo campo fretes_valor na tabela fretes.
  7. Imagine o seguinte: Tabela OS Numero_da_OS nome_do_cliente indicador_de_OS_concluida (sim/não) outros dados que forem necessários Tabela Agenda Número_da_OS data_agenda indicador_de_atendimento_da_OS (Remarcada/Atendida) Funcionario_Que_Atendeu outros dados que forem necessários Se você quizer saber qual os foi atendida em que data SELECT * FROM OS INNER JOIN Agenda A ON OS.numero_da_os = A.Numero_da_os WHERE A.indicador_de_atendimento_da_OS = "Atendida"
  8. Esta é a sintaxe do comando LOAD DATA LOAD DATA [LOW_PRIORITY | CONCURRENT] [LOCAL] INFILE 'file_name.txt' [REPLACE | IGNORE] INTO TABLE nome_tabela [FIELDS [TERMINATED BY '\t'] [[OPTIONALLY] ENCLOSED BY ''] [ESCAPED BY '\\' ] ] [LINES [STARTING BY ''] [TERMINATED BY '\n'] ] [IGNORE número LINES] [(nome_coluna,...)] De modo geral você vai usar assim:LOAD DATA INFILE 'file_name.txt' INTO TABLE nome_tabela FIELDS TERMINATED BY '\t' /*campos separados por tabulação */ ENCLOSED BY '' /* campos entre aspas duplas*/ LINES TERMINATED BY '\n';/* linhas terminadas por "caracter de nova linha" */ Os textos entre /* e */ são comentários.
  9. Oi, 'Italo Peixoto' Mostre o que você fez até aqui.
  10. Seria assim: ONDE nome for igual a x e o genero for igual a x . Em SQL será: SELECT * FROM filme WHERE nome = x AND genero = x;
  11. Mostre-nos a estrutura da tabela agendas, por favor.
  12. Oi, 'Dauro Freitas'! Não entendi. Pode melhorar o texto? Não encontrei problemas na estrutura principal da tabela. Novamente seu problema está nas CONSTRAINTs. Qual o nome correto das tabelas abaixo `regv_tip_inst` ou `tip_inst`. `regv_uf` ou `uf`. `regv_pais?` ou `pais`.
  13. Já estão instalados. Estão incluidos no pacote do MySQl.
  14. Eu uso o mysqldump para exportar e para backup e a ferramenta mysql.exe, de linha de comando, para importar. São eficientes e não dão problema.
  15. Basicamente estas são as diferenças entre os engines mais usados (InnoDB e MyISAM) Integridade referencial: O primeiro aceita, o segundo não. Velocidade: O segundo é mais veloz. Atomicidade: O primeiro, tem. Osegundo, não. Ou seja o primeiro é transacional, mas o segundo, não. Eu tenho um cliente que possui sistemas transacionais que trabalham direto com MyISAM. Tenho problemas com tabelas órfans, de vez em quando. Isto não ocorreria se usasse InnoDB. Mas as máquinas dele são antigas e o servidor é lento, o que impede o uso de InnoDB (que é minha preferência para este tipo de trabalho). Gosto de MyIsam para controle de correio eletrônico, foruns, data Warehouse, e outras aplicações que envolvem grandes volumes de dados e poucas transações (mais consulta e menos atualização). Penso que você já tem o suficiente para analisar o que é melhor para você.
  16. Oi, 'Diogo MOura'! Para que eu possa te ajudar é necessário que você post o código sql que gerou o erro.
  17. Oi, 'Anderson Faro' Leia o artigo que escrevi para o site DVMedia, que publica a revista SQL Magazine, em 12/05/2008. Como fazer auto_increment em atributo em chave primária múltipla No artigo, cometi um pequeno erro na escrita do código. segue abaixo o código corrigido. DELIMITER $$; DROP TRIGGER `test`.`TriggerIncl_ItemPedido`$$ create trigger `TriggerIncl_ItemPedido` BEFORE INSERT on `item_pedido` for each row BEGIN declare numero integer; Set numero = (select max(IT_Pedido) From Item_Pedido where ID_Pedido = new.ID_Pedido); if (numero <= 0) or (numero is null)then set numero = 1; else set numero = numero + 1; end if; set new.IT_Pedido = numero; END; $$ DELIMITER;$$
  18. Oi, 'Santiago'! Tente diminuir a chance de erro. retire o AUTO_INCREMENT desta linha: ENGINE=InnoDB AUTO_INCREMENT=46 DEFAULT CHARSET=latin1; Crie a tabela sem a cláusula CONSTRAINT. Depois, use ALTER TABLE para incluir a CONSTRAINT.
  19. Oi, 'Santiago' Use o comando SET FOREIGN_KEY_CHECKS=0 antes de executar esta carga. E o comando SET FOREIGN_KEY_CHECKS=1 após a execução da carga. Estes comando vão cancelar e habilitar a checagem de integridade referencial durante a carga. Informe o resultado.
  20. Oi, 'Lameira'! Vamos analisar um pouco. Sua questão é achar Qual é o produto mais vendido no ano 2009? Então, corrigindo seu select, temos: SELECT year(c.datacom) AS ANO, p.codpro, sum(i.qntprocom) AS QTD_VENDIDO, p.despro FROM compra c INNER JOIN itemcom i ON i.coditemcom = c.codcom INNER JOIN produto p ON p.codpro = i.coditemcom WHERE compra.datacom between '2009-01-01' and '2009-12-31' GROUP BY i.coditemcom ORDER BY QTD_VENDIDO desc; O primeiro da lista será o mais vendido.
  21. Oi, 'Dauro Freitas' Vou ser direto e reto. 1) Não use tinyint(1) o tipo tinyint possui 2 bytes e sempre será criado assim. Use Byte. 2) Se você deseja usar auto_increment então use unsigned. Não existe auto_increment abaixo de zero. E quando você usa unsigned, você estará dando ao campo a possibilidade de alcançar todos os números disponúiveis para ele. 3)As tabelas pais, tip_int e uf não contém erros que impeçam a criação delas. 4)A tabela reg_inst, se criada sem as constraints, está ok, mas está desnormalizada. Há muita duplicidade de informação. 5) Se você está criando constraints não há a necessidade de criar os indices INDEX `cod_tip_inst` (`cod_tip_inst` ASC) , INDEX `cod_uf` (`cod_uf_inst` ASC, `cod_uf_resp` ASC) , INDEX `cod_pais` (`cod_pais_inst` ASC, `cod_pais_resp` ASC) , pois eles serão criados pela cláusula FOREIGN KEY. 6) Voce está tentando fazer mágica na criação das constraints. 6.1) O nome de uma constraint não deve ser o nome de um atributo nem de um indice já existente. Voce criou o índice e depois tentou criar a constraint com o mesmo nome. (Todas as três). Eu troquei os nomes das constraints para FK_reg_inst_001, FK_reg_inst_002, ..., e FK_reg_inst_005. 6.2) A primeira constraint CONSTRAINT `cod_tip_inst` FOREIGN KEY (`cod_tip_inst` ) REFERENCES `reg_tip_inst` (`cod_tip_inst` ) ON DELETE NO ACTION ON UPDATE NO ACTION, Está referenciando uma tabela que não existe (reg_tip_inst). Você criou a tabela (tip_inst). Troque o nome da constraint e ela passará. 6.3) A segunda constraint CONSTRAINT `cod_uf` FOREIGN KEY (`cod_uf_inst` , `cod_uf_resp` ) REFERENCES `reg_uf` (`cod_uf` , `cod_uf` ) ON DELETE NO ACTION ON UPDATE NO ACTION, Você está cometendo dois erros aqui. o primeiro é o mesmo erro da constraint anterior. Você está se referindo a uma tabela que não existe. (reg_uf) o correto é (uf). O segundo, você está colocando dois atributos(`cod_uf_inst` , `cod_uf_resp`) como foreign key e na referência a tabela `uf` (`cod_uf` , `cod_uf` ), porém a tabela não possui o mesmo atributo, duplicado como chave primária. A referencia de um foreign key deve ser à chave primária da tabela para qual ele está apontando. Para corrigir crie duas constraints. assim:CONSTRAINT `FK_reg_inst_002` FOREIGN KEY (`cod_uf_inst`) REFERENCES `uf`(`cod_uf`) ON DELETE NO ACTION ON UPDATE NO ACTION; CONSTRAINT `FK_reg_inst_003` FOREIGN KEY (`cod_uf_resp`) REFERENCES `uf`(`cod_uf`) ON DELETE NO ACTION ON UPDATE NO ACTION; 6.4) A Terceira constraint (que agora é a quartaCONSTRAINT `cod_pais` FOREIGN KEY (`cod_pais_inst` , `cod_pais_resp` ) REFERENCES `reg_pais` (`cod_pais` , `cod_pais` ) ON DELETE NO ACTION ON UPDATE NO ACTION[/codepossui os mesmos erros da segunda constraint. O correrto é assim:[code]CONSTRAINT `FK_reg_inst_004` FOREIGN KEY (`cod_pais_inst` ) REFERENCES `pais` (`cod_pais`) ON DELETE NO ACTION ON UPDATE NO ACTION, CONSTRAINT `FK_reg_inst_005` FOREIGN KEY (`cod_pais_resp` ) REFERENCES `pais` (`cod_pais`) ON DELETE NO ACTION ON UPDATE NO ACTION;
  22. Beraldo, Os tipos NUMERIC e DECIMAL Estão obsoletos nas versões 5.x en diante. Para tipo flutuante use double. O MySQL usa ponto para casa decimal e não vírgula. Você pode usar a função replace direto em sua instrução sql. Assim: select replace(valor,'.',',') from preçoO Mysql converterá de numerico para string automaticaamente, mas não poderá fazer cálculos com ela.
  23. Oi, 'Tchello' Leia esta seção do manual do MySQL 4.9.9. mysqlimport, Importando Dados de Arquivos Texto
  24. Como disse antes, não conheço nenhuma ferramenta. Mas você pode dar um dump somente da estrutura das tabelas do banco, com o mysqldump, e comparar ou criar uma ferramenta para isto. Quanto ao programa para trabalhar a estrutura e os dados diretamente, use o SQLYog versão 5.13 beta. É free.
  25. Oi, 'Maicon Andrade' Você fez copia física? Se sim, há uma grande chance de você ter problemas. Muitas informações ficam guardadas nos bancos mysql e information_schema. Tais como procedures, triggers, funções, estruturas dos bancos ligações entre tabelas, quem tem direito a fazer o quê e onde, etc. O correto sempre é fazer backup usando o mysqldump ou uma ferramenta comercial. Para analisar tabelas, não conheço ferramenta.
×
×
  • Criar Novo...