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. Oi 'palmeira', a referencia em uma foreign key deveser feita a chave primária da tabela pai. No seu caso o atributo id da tabela confederacao deverá esstar na tabela federacao e não onome como você colocou.
  2. Acesse http://dev.mysql.com/downloads/
  3. 'douglasdamame' Corrija esta linha `Pago` TINYINT NULL DEFAULT (0), para que fique assim: `Pago` TINYINT NULL DEFAULT 0,
  4. 'LillyC' O erro de sua cl´´ausula WHERE em seu SELECT está assim: SELECT campos FROM tabela WHERE AND... Quando deveria estar assim: SELECT campos FROM tabela WHERE {uma comparação}AND {outra comparação}... Modifique para que fique assim e não haverá mais erro... // define a consulta $sql = "SELECT id, nome, endereco, bairro, cep, pf_pj, cpf_cnpj, cnh, rg_ie, dt_nascimento, telefone, celular, obs, email FROM clientes WHERE 1=1 "; // detecta filtro por nome do clientes if (!empty($_REQUEST['clientes'])) { $client = addslashes($_REQUEST['clientes']); $sql .= " AND nome like '%{$client}%'"; } //ordena a consulta $sql .= ' ORDER BY ' . $_REQUEST['ordem']; //executa a instrução $result = $conn->query($sql); ...
  5. Forum Errado. Movendo MySQL -->> PHP
  6. Desculpa a demora, problemas de família.. Denis, o "WHERE" não é utilizado para quando requer uma condição especial? Por exemplo, se eu tenho duas tabelas relacionados pelo ID uso esse campo para fazer consulta com as duas tabelas.. Bom, enquanto a dúvida persiste continuo estudando e fazendo testes... Vls Oi 'LillyC', A cláusula WHERE´deve ser utilizada como um filtro que afetará todo o SELECT. Infelizmente muitos usam o WHERE oara realizar as condições de JOIN (ligação entre duas tabelas). Eu recomendo usar a cláusula INNER JOIN ou LEFT JOIN para fazer isso. Usar a cláusula JOIN torna seu SELECT mais limpo. Mais fácil de ler. Exemplo:SELECT Titular.Nome, Dependente.Nome FROM Titular, Dependente WHERE Titular.codTitular = Dependentes.codTitular AND Titular.Nome LIKE "M%" Exemplo 2SELECT Titular.Nome, Dependente.Nome FROM Titular INNER JOIN Dependente ON Dependentes.codTitular = Titular.codTitular WHERE Titular.Nome LIKE "M%" Os dois exemplos acima produzem o mesmo resultado. (Selecionar o nome dos titulares e o nome dos dependentes de todos os titulares cujos nomes começam pela letra "M") Porém o segundo é mais fácil de entender. Imagina a confusão para entender o código do exemplo 1 se você tiver que ligar 4 ou 5 tabelas e se a cláusula WHERE tiver diversos filtros? O exemplo 2 coloca "cada macaco em seu galho" e torna o código muito mais claro.
  7. Oi, 'cleber_mav' Insira um atributo na tabela history_services. Eu criei o atributo idServices que representará o id da tabela services quando da gravação dos dados para que você possa saber o histórico de cada registro de services. O trigger de inclusão é assim: DELIMITER $$; DROP TRIGGER `test`.`Services_before_insert`$$ CREATE TRIGGER `test`.`Services_before_insert` BEFORE INSERT on `test`.`services` FOR EACH ROW BEGIN insert into history_services(`idservices`, `name`, `request_date`, `value`, `status`) values(new.id, new.name, new.request_date, new.value, 'ATIVO'); END$$ DELIMITER;$$ E o trigger de exclusão é assim:DELIMITER $$; DROP TRIGGER `test`.`Services_before_delete`$$ CREATE TRIGGER `test`.`Services_before_delete` BEFORE DELETE on `test`.`services` FOR EACH ROW BEGIN insert into history_services(`idservices`, `name`, `request_date`, cancellation_date, `value`, `status`) values(old.id, old.name, old.request_date, NOW, old.value, 'INATIVO'); END$$ DELIMITER;$$
  8. Sim, o MySQL só trabalha atrelado com outra linguagem. Diferente do access que é voltado para end users o mysql é um banco profissional, com uma capacidade muito superior a do access. Linguagens que trabalham com MySQL: Todas. O MySQL possui algus gerenciadores de bd. Entre outros estão o MyAdmin, SQLyog, MySQL Workbench. Existem muitos livros e apostilas free na net. Seria interessante você estudar sobre bancos de dados em geral. Aprender o que é forma normal, estruturação de dados, etc. Para isto recomendo o livro:Sistemas de Bancos de Dados - Editora: Addison-Wesley - Autor: RAMEZ E. ELMASRI & SHAMKANT NAVATHE - ISBN: 8588639173 O manual do Mysql também é uma boa referência para tirar dúvidas de como funcionam os comandos. Se precisar de mais informações contiue postando. este também éo objetivo deste fórum.
  9. A melhor maneira é guardar o arquivo em uma pasta de seu servidor dearquivos e guardar no banco mysql somente o nome eo caminho de onde está o arquivo. Quando a desenvolver o sistema em PHP,vou mover o tópico para a área de PHP pois aqui só tratamos do banco de dados. Movendo MySQL -->> PHP
  10. Oi 'master php', O comparador IN é um condicional que pode ser utilizado na cláusula WHERE ou na cláusula HAVING do comando SELECT Sua função é verificar se um elemento está dentro dentro de um conjunto. Exemplo: SELECT 2 IN (1,2,3,4) Resposta 1 (verdadeiro - encontrou elemento) SELECT 6 IN (1,2,3,4) Resposta 0 (falso - não encontrou elemento) A cláusula HAVING do comando SELECT é usada somente quando se aplica outra cláusula (GROUP BY). Serve para filtrar somente os valores destes agrupamentos. Exemplo:SELECT nome, COUNT(nome) FROM clientes GROUP BY nome HAVING COUNT(nome) > 1 O exemplo acima exibe o nome dos clientes que estejam duplicados (apareçam mais de uma vez) na tabela de clientes. Este tipo de condicional não pode ser obtido usando a cláusula WHERE Outro exemplo:Exemplo:SELECT nome, COUNT(nome) FROM clientes WHERE sexo = 'F' GROUP BY nome HAVING COUNT(nome) > 1O exemplo acima combina dois tipos de filtros diferentes. O filtro da cláusula WHERE afeta toda a tabela e o filtro da cláusula HAVING afeta somente o que acontece no agrupamento. Exibe o nome dos clientes, do sexo feminino, que estejam duplicados (apareçam mais de uma vez) na tabela de clientes.
  11. Oi Tércio, Como boa prática eu não armazenaria imagens no banco. é mais fácil guardar o path/nome das imagens no banco e as imagens ficarem em uma pasta do servidor. Segundo. atendendo a 3ª forma normal eu teria uma tabela separada para armazenar as fotos de cada produto. A esturura desta tabela seria o identificador do produto e o path/nome da imagem. Assim eu não deixaria espaços em branco na tabela de produto caso houvesse menos produtos e não ficaria limitado a 5 imagerns caso houvesse mais imagens para um ptoduto. O trabalho de manutenção seria menor e o acesso as imagens seria mais rápido (exigiria menos I/O entre o banco e o servidor http).
  12. Oi, 'Julio Cozini'! Como sua duvida não está relacionada diretamente com mysql, vou transferir este tópico para uma área mais apropriada. MOVENDO MySQ L-->> EDITORES
  13. Denis Courcy

    Ajuda mysql

    Se é assim, então vamos lá: SELECT B.NOME, COUNT(*) FROM FUNCIONARIO AS A, PROJETO AS B, ALOCADO AS C WHERE C.PFUNCIONARIO = A.IDFUNCIONARIO AND C.PPROJETO = B.IDPROJETO AND DEPENDENTES > 3 AND B.IDPROJETO IN (SELECT PPROJETO FROM ALOCADO GROUP BY PPROJETO HAVING COUNT(*) > 4) GROUP BY B.NOME; Selecionar nome do projeto e quantidade de pessoas alocadas por projeto onde a quantidade de dependentes for maior que 3 e o projeto estiver com mais de 4 alocações. O segundo select será:SELECT IDFUNCIONARIO, NOME FROM FUNCIONARIO WHERE NOT EXISTS ( (SELECT IDPROJETO FROM PROJETO WHERE PRIORIDADE = 2 AND IDPROJETO NOT IN ( SELECT PPROJETO FROM ALOCADO WHERE PFUNCIONARIO = IDFUNCIONARIO ) )); Selecione o identificador e o nome do funcionario que não exista em projetos com prioridades 2 e que não estejam alocados.
  14. Denis Courcy

    Ajuda mysql

    Oi 'GRAO777', Ajudar a fazer o que?
  15. Oi 'LillyC', Você esqueceu da cláusula WHERE. O código passa da declaração FROM tabela para AND sem usar a cláusula WHERE. Veja a sintaxe do comando SELECT no manual do mysql de sua versão. SELECT {lista de campos} FROM {nome da tabela} [WHERE {campo} condição]
  16. Sim. Tem como obter histórico e recuperar atualizações indevidas. Estude sobre log-binário no manual do mysql de sua versão.
  17. Sigas os passos abaixo e talvez funcione: Pare o serviço do MySQL. Copie os arquivos /var/lib/mysql/ib_logfile* para outro lugar Copie os arquivos ib_logfile* do backup para /var/lib/mysql/ Reinicie o serviço do banco Boa sorte. pode ser que não funcione. a recuperação "na marra" de arquivos innodb é muito difícil.
  18. Oi 'marcosfj1' , Tente algo assim: SELECT IF(sexo = 'M','MASCULINO','FEMININO') FROM tabela
  19. Tenta assim:select sum(id) from teste258 group by id order by sum(id) desc limit 1
  20. Oi Elaine, Você entendeu, mas não fez o que falei. Ao escrever sua trigger você cometeu alguns erros. 1º Você está tentando misturar banana com laranja. Veja sua trigger: ... DECLARE _pais_cpf int; select pais_cpf_cnpj from pais; BEGIN INSERT INTO pais_empresas values (_pais_cpf); END; END$$ Você declarou uma variável, não a usou para receber nenhum valor e, quando fez o insert usou a variável vazia. 2º Ao fazer uma trigger assim você corre o risco de criar uma inconsistencia de dados na tabela pais_empresas, pois ela só estará recebendo dados da tabela pais. 3º Este é menos grave mas não mais importante que os outros. Um CPF pode ser uma chave única mas não deve ser nunca a chave primária. Chaves primárias são feitas única e exclusivamente para ligar uma tabela a outra. Normalmente eu evito - esta é uma prática minha - colocar mais mais de um atributo (campo) como chave primária em uma tabela. Vendo o código da segunda trigger que você mostrouDELIMITER $$ CREATE TRIGGER inserir_p_emp1 AFTER INSERT ON pais FOR EACH ROW BEGIN IF (pais_cpf_cnpj is not null) THEN INSERT INTO pais_empresas set pais_cpf_cnpj = pais_cpf_cnpj; END IF; END$$ Os seguintes erros foram cometidos: 1º O comando insert está errado. ele não usa o SET nem o sinal de igual. Veja a documentação do MySQL para saber como é o comando http://scriptbrasil.com.br/forum/index.php...st&p=478131 Já que você insiste em colocar seu código para alimentação da tabela pais_empresas em uma trigger vou escrever uma rotina abaixo para que você possa ter uma idéia. Supondo que anteriormente você fez a instrução de inserção de empresa e que a chave primária da tabela empresa é IDEMPRESA e que IDEMPRESA é INTEGER NOT NULL AUTO_INCREMENT Supondo que o atributo que representa a empresa na tabela pais_empresas também se chama IDEMPRESA, então teremos: DELIMITER $$; CREATE TRIGGER inserir_p_emp1 AFTER INSERT ON pais FOR EACH ROW BEGIN DECLARE vIDEMPRESA INTEGER NOT NULL DEFAULT 0; SET vIDEMPRESA = (SELECT MAX(IDEMPRESA) FROM EMPRESA); /*Pega o ultimo registro inserido na tabela empresa*/ INSERT INTO pais_empresas(IDEMPRESA, pais_cpf_cnpj) VALUES(vIDEMPRESA, NEW.pais_cpf_cnpj); /* o NEW na frente do atributo pais_cpf_cnpj, diz ao trigger para pegar o valor que ele acabou de inserir para este atributo na tabela pais*/ END$$ DELIMITER;$$Faça a modificação necessária para atender sua necessidade e reporte se tiver mais dúvidas. Não deixe de ler o Manual do MySQL. É muito importante como referência. Eu o uso sempre.
  21. Oi Elaine, Para este tipo de processo você deverá criar uma rotina que pode ser uma storage procedure (o que não recomando pois o MySQL ainda carece de mensagem de retorno em caso de ABEND de transação) ou através de linguagem de programação que você usa. Você deverá seguir a seguinte logica: Os cadastros de empresa e pais podem ser independentes pois suas gravações não afetam nada. Eu coloquei a empresa primeiro poque deverá haver uma quantidade menor de empresa do que de pais. Então sua gravação será independente. Coloquei o cadastro de pais em segundo lugar porque dentro dele já vou buscar a empresa que ele trabalha. Quando for gravar a informação dos pais e do relacionamento entre empresa e pais usarei uma unica transação seguindo a logica abaixo para executála: A lógica abaixo é usada quando você define que seu MySQl NÃO possuirá COMMIT automático Iniciar transação Gravar Pais Gravar Relacionamento Empresa_x_Pais Commitar transação Se houver erro dar rollback na transação Fim de transação Uma outra forma que segue lógica parecida é usada quando você define seu MySQl com COMMIT automático Gravar Pais COMMIT Gravar Relacionamento Empresa_x_Pais COMMIT
  22. Denis Courcy

    import table

    INSERT INTO bancodestino.tabeladestino(campo1,campo2,campo3,campo4,campoN) SELECT campo_A,campo_B,campo_C,campo_D,campo_N FROM bancoorigem.tabelaorigem
  23. Denis Courcy

    checkbox no mysql

    O modelo de dados é independente de como estes dados serão manipulados/exibidos. O modelo de dados depende, essencialmente, do propósito de sua aplicação. Sua concepção é, normalmente, realizada quando das definições do sistema. Após os primeiros levantamentos e, de preferência, após a criação de seus requisitos ( modelos e documentação de casos de uso quando se trabalha com UML para o projeto do sistema.) Pense no projeto de seu sistema. Levante os requisitos funcionais e não funcionais dele, crie o modelo de dados, depure bem tanto o modelo como os requisitos e, depois, crie o banco de dados físico e comece a programar
  24. Denis Courcy

    checkbox no mysql

    Isto é da linguagem de programação que você usa. Informe a linguaagem e passarei o tópico para o fórum correto.
  25. Por favor envie a relação de campos de cada tabela, pois a imagem que você postou está ilegivel. Informe de cada tabela qual é a chave primária e com que campo ela se liga a outra tabela
×
×
  • Criar Novo...