Ir para conteúdo
Fórum Script Brasil

Denis Courcy

Moderadores
  • Total de itens

    3.089
  • Registro em

  • Última visita

Posts postados por Denis Courcy

  1. como seleciono todos os registros de uma tabela, que possuem, no campo A, mais de uma ocorrência ?

    A B

    ----- -------

    abc aaa

    def cccc

    123 dddd

    abc aajj

    456 aaa

    def ddd

    resultado:

    abc aaa

    def cccc

    abc aajj

    def ddd

    obrigado !

    Oi, Visitante!

    Não lembro agora se o MySQL aceita este tipo que vou falar. Se não aceitar verifique a opção 2 que forneço abaixo, ainda nesta resposta.

    Opção 1

    SELECT a, b 
    FROM tabela WHERE a IN (SELECT a 
                       FROM tabela GROUP BY a
                       HAVING COUNT(a) > 1 );
    A Opção 2 abaixo prevê alguns passos: 1 Criação de uma tabela temporária;
    CREATE TEMPORARY TABLE temp (
    a CHAR(3), 
    qt int,
    PRIMARY (a)
    );
    2 Inclusão de registros na tabela temporária;
    INSERT INTO temp (a, qt)
    SELECT a, COUNT(a) AS qt FROM tabela GROUP BY a
    HAVING qt > 1;
    3 Sua consulta propria mente dita (neste caso usando um join com a tabela temporária) e,
    SELECT t.a, t.b FROM tabela t
    INNER JOIN temp tm ON t.a = tm.a;
    4 destruição da tabela temporária.
    DROP TABLE temp;

    att

    Denis Courcy

  2. pessoal gostaria de saber como fazer para remover o case sensitive do mysql de servidores linux....

    Exemplo tenho uma tabela com o nome usuarios

    se eu fizer um selec assim da certo..

    select * from usuarios

    porem se eu fizer colocando o nome da tabela Maiusculo da erro..

    select * from USUARIOS ou select * from Usuarios

    gostaria de saber como fazer para ele não fazer questão se e maiusculo ou minusculo como se fosse em um windows...

    valeu desde já brigadão...

    Oi, Fernando!

    Infelizmente isto não é possível duas limitações:

    A primeira, por causa do próprio Sistema Operacionalque é caso sensitivo. E como as tabelas residem como arquivos do S.O., então assim também o são;

    A segunda está no próprio manual do MySQL versão 4.1 seção 1.8.3. Extensões do MySQL para o Padrão SQL-92 que diz:

    "Nomes de bancos de dados e tabelas são caso sensitivoo no MySQL em sistemas operacionais

    que possuem o sistema de arquivos caso sensitivoo (como na maioria dos sistemas

    Unix). Ver Seção 6.1.3, “Caso Sensitivo nos Nomes”.".

    A seção 6.1.3 reforça o que informei na primeira parte desta resposta e diz:"No MySQL, bancos de dados e tabelas correspondem a diretórios e arquivos em seus diretórios.

    Consequentemente, o caso sensitivo no sistema operacional irá determinar o caso sensitivo nos nomes

    de bancos de dados e tabelas. Isto significa que nomes de bancos de dados e tabelas são caso

    sensitivo na maioria dos Unix e caso insensitivo no Windows. Uma exceção proeminente aqui é o

    Mac OS X, quando o o sistema de arquivos padrão HPS+ está sendo usado. No entanto o Mac OS X

    também suporta volumes UFS, esle são caso sensitivo no Mac OS X assim como são no Unix. See

    Secção 1.8.3, “Extensões do MySQL para o Padrão SQL-92”.

    NOTA: Apesar de nomes de bancos e tabelas serem caso insensitivo no Windows, você não deve

    fazer referência a um certo banco de dados ou tabela utilizando casos diferentes na mesma consulta.

    A consulta a seguir não deve funcionar porque ela chama uma tabela como minha_tabela e outra

    como MINHA_TABELA."

    att

    Denis Courcy

  3. Olá!

    Acabei de instalar o Mysql no Fedora 7. Seguindo uma apostila use o comando - GRANT ALL ON teste.* TO alunos IDENTIFIED BY '123456'; - para criar o usuário alunos com acesso ao banco de dados teste e dá essa mensagem:

    Query OK, 0 rows affected (0.15 sec)

    Isso significa que o usuário na foi criado?

    Obrigado!

    Oi, 'acdestefani'!

    Sim. foi criado.

    att

    Denis Courcy

  4. Olá pessoal,

    gostaria de saber se existe alguma função em mysql que exiba os nomes das tabelas com uma codição.

    Alguma coisa do tipo show tables where name ...

    Alguém sabe como fazer isso?

    Oi, Thales!

    O manual do MySQL mostra a sintaxe do SHOW TABLES, da seguinte forma:

    SHOW [FULL] TABLES [FROM db_name] [LIKE 'pattern']
    Então, você pode usar
    SHOW TABLES LIKE 'A%'

    para buscar todas as tabelas que tenham nomes iniciador por "A";

    att

    Denis Courcy

  5. Galera, pelo que eu estudei acho que isso não é possível, mas só para confirmar gostaria de saber se é possível criar um procedimento dentro do banco (stored procedure, trigger) que seja executada sempre quando for meia noite.

    Valeu

    Oi, Berdam!

    Este procedimento automatizado só é possível a partir da versão 5.1 do MySQL.

    att

    Denis Courcy

  6. esta dando erro na tabela, eu não encontrei alguém poderia me ajudar

    ...

    #1064 - Você tem um erro de sintaxe no seu SQL próximo a 'CURRENT_TIMESTAMP,

    Funcionario char(3) NOT NULL,

    Nascimento varchar(10) de' na linha 22

    Oi, 'junaooaks'!

    Por default o MySQL assume que o primeiro atributo timestamp not null da tabela é CURRENT_TIMESTAMP.

    Declarar CURRENT_TIMESTAMP causa uma redundância que não é tratada pelo MySQL (BUG) e provoca este erro.

    Declare o atributo simplesmente assim:

    UltimaAlteracao timestamp NOT NULL

    O erro vai parar e seu atributo vai ter CURRENT_TIMESTAMP que você deseja.

    Att

    Denis Courcy

  7. tenho a seguinte coluna da tabela A :

    ...

    preciso filtrar todas as linhas que possuem números de 200 até 299. O resultado seria :

    ...

    alguma sugestão de como posso fazer isso no sql ?

    Oi, Visitante!

    Esta pesquisa fatalmente vai cair em um TABLE SCAN, ou seja vai varrer toda sua tabela independentemente da quantidade de registros a serem retornados. Isto porque as funções usadas avaliam linha a linha da sua cláusula where. Isto não será problema se sua consulta for de vez em quando, mas se for sempre é necessário que você pense em um a forma melhor de armazenar estes dados estruturados.

    O código é este:

    Select campo from tabela where substring(campo, 4, 3) between '200' and '299';

    att

    Denis Courcy

  8. Boa tarde!

    Galera eu tou usando o mysql como banco de dados.

    Eu estou tendo problemas com duas tabelas aqui, é o seguinte, eu tenho uma tabela curso, e essa tabela esta relacioanda com uma tabela disciplina, Tenho um tabela professor tambem.

    Esse professor ele leciona em algum curso, porem ele pode dar aulas em varias disciplinas desse curso. alguém poderia me dar uma luz de como fazer isso e manter a integridade do banco.

    Agradeço a atenção.

    Oi, Hilário!

    A forma mais correta de montar este modelo é através de uma ligação ternária. Ou seja Você precisa de uma tabela extra que será o relacionamento entre Curso x Disciplina e Professor que neste exemplo vou chamar de RL_CURDISCPROF e conterá os atributos de identificação de Curso, Disciplina e Professor respectivamente. Não terá chave primária somente Foreign Keys com constraints para as tabelas de cadastro.

    CREATE TABLE RL_CURDISCPROF (
       id_curso integer unsigned not null
       id_disciplina integer unsigned not null,
       id_professor integer unsigned not null
    );
    ALTER TABLE RL_CURDISCPROF
       ADD CONSTRAINT FK_CURDISCPROF_001 FOREIGN KEY (id_curso) REFERENCES curso(id_curso) ON DELETE NO ACTION, ON UPDATE NO ACTION, 
       ADD CONSTRAINT FK_CURDISCPROF_002 FOREIGN KEY (id_disciplina) REFERENCES disciplina(id_disciplina) ON DELETE NO ACTION, ON UPDATE NO ACTION, 
       ADD CONSTRAINT FK_CURDISCPROF_003 FOREIGN KEY (id_processor) REFERENCES professor(id_professor) ON DELETE NO ACTION, ON UPDATE NO ACTION
    ;

    Com isso, você saberá que professor está em que disciplina de que curso e vice versa.

    NOTA: Esta solução trabalha muito bem com tabelas tipo Innodb. Com tabelas tipo MyISAM somente as constraints não funcionarão.

    Caso esta solução não resolva seu problema pooste novamente e avaliaremos melhor.

    att

    Denis Courcy

  9. Ninguém vai me ajudar?

    please!

    Oi, Clécio!

    Cria via ODBC e BDE.

    No DataModule Coloque o componente TDatabase, configure a proprieadade DatabaseName com o nome interno de seu banco de dados e na propriedade AliasName coloque o nome que você definiu no ODBC. Defina, também a propriedade LoginPrompt para False e atribua os nomes de usuario e senha que serão utilizados para acessar o servidor de BD.

    de resto é só utilizar os componentes TQuery e outros para manipulação das tabelas. Quanto ao Login propriamente dito, crie uma tela com dois Tedit (um para login e outro para senha) e desenvolva sua lógica no click do botão OK.

    Basicamente é isso.

    att

    Denis Courcy

  10. Tenho uma base MySQL 4.1 na qual existem 5 tabelas. Uma delas, chamemos de A, possui 50 milhões de registros e aproximadamente 45GB. Ela funciona bem a 8 anos com IO diario, e concorrência, bem grande.

    De um tempo para cá, uns 3 meses, alguma operação sobre o banco vem corrompendo essa tabela e exigindo reparos frequentes. A pergunta é: Atingimos o limite do MySQL ou outra coisa pode estar corrompendo as tabelas? O erro do EventViewer é "22".

    Grato.

    Oi, Avalon!

    Todos os problemas de corrupção de tabelas que encontrei até hoje, com o MySQL, foram ocasionados por falha de Hardware ou do Sistema Operacional. Ainda não tinha tido um relato de uma tabela tão grande, mas vamos avaliar o que pode estar ocorrendo.

    Primeiro vamos verificar as limitações do MySQL, devido ao tamanho de sua tabela.

    No Manual, na seção 1.2.2 "Principais Características do MySQL", o autor comenta sobre testes em tabelas co o tamanho informado por você

    "• Escalabilidade e limites

    • Lida com bancos de dados enormes. Usamos o Servidor MySQL com bancos de dados

    que contém 50.000.000 registros e sabemos de usuários que usam o Servidor MySQL

    com 60.000 tabelas e aproximadamente 5.000.000.000 de linhas.

    • São permitidos até 32 índices por tabela. Cada índice pode ser composto de 1 a 16 colunas

    ou partes de colunas. O tamanho máximo do índice é de 500 bytes (isto pode ser alterado na

    compilação do MySQL). Um índice pode usar o prefixo de campo com um tipo CHAR ou

    VARCHAR."

    A Seção 1.2.4. "Qual o Tamanho Que as Tabelas do MySQL Podem Ter?" Mostra a que tamanho as tabelas podem chegar.

    Por padrão, As tabelas MyISAM (Não sei se é este seu caso) estão limitadas a 4GB. Mas com a adição das cláusulas AVG_ROW_LENGHT e MAX_ROWS este limite pode ser alterado e ultrapassado em muito.

    Verifique se você já atingiu o limite estabelecido na criação da tabela usando o comando SHOW TABLE STATUS

    No Exemplo abaixo utilizo o status em cima de uma tabela chamada "weather".

    mysql> show table status like 'weather' \G
    *************************** 1. row ***************************
    Name:                weather
    Type:                 MyISAM
    Row_format:       Dynamic
    Rows:                0
    Avg_row_length: 0
    Data_length:      0
    Max_data_length: 4294967295
    Index_length: 1024
    Data_free: 0
    Auto_increment: NULL
    Create_time: 2003-03-03 00:43:43
    Update_time: 2003-03-03 00:43:43
    Check_time: 2003-06-14 15:11:21
    Create_options: 
    Comment: 
    1 row in set (0.00 sec)
    Você pode usar o comando ALTER TABLE para modificar estes valores. Tal como abaixo
    mysql> alter table weather max_rows = 200000000000 avg_row_length = 50;
    Query OK, 0 rows affected (0.03 sec)
    Records: 0  Duplicates: 0  Warnings: 0

    Em segundo lugar, procure falhas em placas de rede, cabos, switches, memória RAM, placa mãe e HD;

    Verifique, também, se sua rede não está apresentando colisões.

    Bom, estas são as dicas que tenho para este problema.

    Faça sob seus próprios riscos

    Não Esqueça de fazer Backup ANTES

    att

    Denis Courcy

  11. E ai galera beleza??

    É o seguinte, estou tentando executar a seguinte subquery no mysql:

    select * from produtos where pro_usu_codigo = (select usu_codigo from usuario where usu_cpf = '11111111111');
    observações as tabelas envolvidas são chamadas produtos e usuario pro_usu_codigo: código do usuário na tabela produtos usu_codigo: código do usuário na tabela usuário usu_cpf: numero do cpf na tabela usuario Ao executar o código recebo a seguinte mensagem de erro: Subquery returns more than 1 row Gostaria de saber como faço para uma subquery retornar mais de um valor (se isso é possível). No caso eu teria que usar um for? Ou há algum outro método? vlw galera!!
    Oi, 'Dixavado®'! Esperimente trocar o = pelo IN na sua cláusula WHERE do select principal. Não sei se é o resultado que você deseja, mas funciona.
    SELECT * FROM produtos WHERE pro_usu_codigo IN (select usu_codigo from usuario where usu_cpf = '11111111111');

    att

    Denis Courcy

  12. Bom dia amigos,

    ...

    Surgiu uma necessidade de criar alguns selects aqui no meu servico, segue abaixo a estrutura da tabela em que eu preciso criar o select:

    mysql> select id, date, job_id, printer, user, pages from jobs_log;

    +----+---------------------+--------+---------+-------------+-------+

    | id | date | job_id | printer | user | pages |

    +----+---------------------+--------+---------+-------------+-------+

    | 1 | 2007-11-21 14:00:52 | 1 | teste | root | 0 |

    | 2 | 2007-11-21 15:52:51 | 8 | teste | informatica | 2 |

    ....

    | 29 | 2007-11-26 09:52:52 | 40 | iris | msantos | 1 |

    | 30 | 2007-11-26 09:54:42 | 41 | iris | msantos | 1 |

    +----+---------------------+--------+---------+-------------+-------+

    30 rows in set (0.00 sec)

    Preciso criar um select que mostre um campo com o total de pages para cada usuário, somando todos as pages e apenas um registro por usuário.

    Obrigado pela atencão, abracos ....

    Oi, Luis!

    Faça deste modo:

    select user, sum(pages) as total_pages 
    from jobs_log Group by user;

    att

    Denis Courcy

  13. Caros amigos, estou precisando criar um relatório a partir de algumas tabelas do sistema e não estou conseguinto fazê-la. VOCÊS TEM IDÉIA DE COMO EU CONSIGO FAZER ISSO? NÃO TENHO MUITA EXPERIÊNCIA EM BANCO DE DADOS, MAS PRECISO OBTER ESSAS INFORMAÇÕES.

    DESDE JÁ, AGRADEÇO À TODOS !!!

    []'S

    Prezado Ricardo!

    Analisei sua solicitação e recomendo que você desenvolva um algorítimo, em sua linguagem de programação, que execute esta terefa. O resultado que você deseja envolve um tipo de rotina chamado "quebra" e várias outras interações que são melhor negociadas através de lógica de programação.

    Caso você não saiba como montar o algorítimo poste no forum de lógica de programação (http://scriptbrasil.com.br/forum/index.php?showforum=64) que poderemos tentar ajudá-lo.

    att

    Denis courcy

  14. ola,

    estou utilizando o delphi+zeus+mysql5.0

    gostaria de saber se existe alguma possibilidade de realizar uma transacao utilizando tabelas myisam.

    agradecidamente

    Wellington Andrade Silva

    Oi, Wellington!

    Com MyISAM Não.

    Você pode simular com o delphi usando o try... except.

    Passo o código amanhã, pois não tenho aqui e não lembro como faz.

    att

    Denis Courcy

    Oi, Wellington!

    Com MyISAM Não.

    Você pode simular com o delphi usando o try... except.

    Passo o código amanhã, pois não tenho aqui e não lembro como faz.

    att

    Denis Courcy

    Oi, Wellington!

    achei aqui em meio a minha bagunça um fragmento de código que pode ser utilizado para esta tarefa. O banco é mysql rodando com BDE via ODBC, mas creio que você possa fazer a adaptação necessária.

    try
             dm.banco.StartTransaction;
             query1.ParamByName('rz').Value:='S';
             query1.ExecSQL;
             dm.banco.Commit;
             showmessage('EXAME REALIZADO');
          except
             showmessage('não FOI POSSIVEL ALTERAR EXAME AGENDADO');
             dm.banco.Rollback;
          end;

    att

    Denis Courcy

  15. Boa tarde amigos,

    Tenho duas tabelas - topicos e mensagens. Cada tópico possui uma ou mais mensagens e cada mensagem pode ter status 0 ou 1 (pendente ou respondida). Preciso de uma query que retorne o total de mensagens por tópico e o número de mensagens respondidas por tópico. Por exemplo:

    tópico --- Mensagens --- Mensagens respondidas

    ---------------------------------------------------------

    xyz --- 8 --- 3

    zyx --- 5 --- 4

    abc --- 2 --- 2

    cab --- 1 --- 0

    Retornar apenas o número de mensagens por tópico é fácil. Retornar apenas o número de mensagens respondidas também é moleza. Mas como fazer para retornar os dois em uma única query?

    Alguém pode me ajudar?

    Abraço!

    Filipe

    Oi, Felipe!

    Sua consulta ficará assim:

    Select tópico, count(tópico) as qtmensagens, sum(if(status=0,1,0)) as qtrespondidas from tópico t
    inner join mensagem m on t.tópico = m.tópico
    group by tópico;

    Obs.: Por não saber qual campo faz relacionamento entre as tabelas tópico e mensagem usei o campo tópico como integrador entre as referidas tabelas.

    Faça a adaptação necessária e informe sucesso ou fracasso.

    att

    Denis Courcy

  16. E ai ..tava querendo fazer uma consulta em todas muitas tabelas de um bd (8), e elas até tem alguns campos em comum,como titulo,descrição,mas algumas tem tem campos que outras não tem, e eu não estou conseguindo fazer esse select,sera que alguém sabe?

    Vlw!!

    Oi, 'viejoyo'!

    Sem atributos em comum que possam identificar relacionamentos entre as tabelas sua unica saida será usar a cláusula UNION em seu SELECT. Procure no capítulo 6 do manual do mysql versão 4.1 para detalhes de select com UNION.

    att

    Denis Courcy

    P.S.:Cuidado com o que vai fazer pois isto poderá virar um um emaranhado que nem você entenderá.

  17. Aew Galera, gostaria de saber a função para integração entre o mysql e outros bancos.

    Tipo acesso as tabelas de outros bancos.

    Vlw

    Oi, Eduardo!

    Que eu saiba não há função para este tipo de operação.

    Normalmente este tipo de interação é feito através de programas chamados de "data-bridges", que lêem os dados de um banco e de tempos em tempos repássa-os ao outro banco.

    No mysql eu li que isto pode ser feito usando replicação, mas não tenho o material aqui para ajudá-lo.

    att

    Denis Courcy

    P.S:

    Verifique em http://www.imasters.com.br/artigo/7058/sql..._mysql_parte_1/

  18. Pessoal, boa tarde , se eu tenho 10 terminais todos acessando o mesmo BD como root isso degrada a performance ???

    Estou usando aplicativo desenvolvido em xharbour com sqllib para acesso ao MySql .

    Muito Obrigado

    Abs

    Jarbas

    Oi, Jarbas!

    Para o MySQL tanto faz se todos os terminais trabalham com root, ou se cada terminal trabalha com um login diferente.

    A razão pe simples. O mysql funciona a base de threads. A cada conexão, independente do nome do login, ele cria um thread diferente. Assim, o que determina a perda de performance é o excesso de conexões. Como no seu caso são somente 10 estações, a perda de performance maior seria se o banco de dados estivesse em uma delas, pois assim, além de compartilhar memória para o próprio processamento (cada thead em particular), o mysql teria que compartilhar memória com um usuário em sua própria máquina. Por isso deve-se evitar que o servidor de banco de dados seja utilizado como uma estação.

    Glossário:

    Thread, ou linha de execução em português, é uma forma de um processo dividir a si mesmo em duas ou mais tarefas que podem ser executadas simultaneamente.

    att

    Denis Courcy

  19. Boa galera!

    Aqui tenho uma missão que me parece simples, porem não consigo resolver.

    ...

    Boa agradeço.

    Shelter

    Oi, Shelter!

    se não me falha a memória, o código seria assim:

    Select  * ,  sum(if(tipo=0, 1, 0) ) as efetuadas, sum(if(tipo=1, 1, 0) ) as recebidas from crjj04;

    Informe sucesso ou fracasso para que possamos avaliar.

    att Denis Courcy

  20. Oi, Rodrigo!

    Analisei seu problema e cheguei a uma solução que passa por alguns passos:

    1 Criação de uma tabela temporária e carga dos dados nela (poderia ser uma storage procedure)

    A tabela temporária deverá ter os campos idcliente e mes.

    a carga consistem em 12 registro para cada cliente

    o primary key ficará com os dois campos (idcliente, mes);

    Create temporary table temp (
       idcliente int not null,
       mes int not null,
       primary (idcliente, mes)
    );
    2 A seleção que fornecerá sua resposta
    Select t.idcliente, t.mes from temp t
    left join pagamento p on t.clienteid = p.clienteid and t.mes = month(p.datapagamento)
    where ISNULL(p.idcliente);
    3 A exclusão da tabela temporária para liberação de memória
    Drop temp;

    Explicando o código:

    Ao criar a tabela temporária com base na tabela de clientes estabelecemos um relacionamento válido para a tabela de pagamentos que responde a pergunta quem não pagou

    No Select a cláusula Left Join retornará todas as linhas da tabela temp

    independente ou não se há correspondente com pagamento.

    Na cláusula where criamos o filtro para que seja retornado somente o que é desejado.

    Inconvenientes:

    A tabela temp tem que ser criada todas as vezes que necessitar rodar este tipo de consulta

    A comparação t.mes = month(p.datapagamento) resultará em um table scan (ou seja, uma varredura completa em todas as 2 tabelas) porque a função precisa ser avaliada para cada registro da tabela pagamentos. Uma forma de melhorar esta performance seria criar um campo com mês de pagamento e este campo deveria ser indexado)

    Analise e informe sucesso ou fracasso

    att

    Denis Courcy

  21. Amigos,

    Gostaria de uma ajuda... Eu tenho uma tabela que possui a data do pagamento...

    O usuário digita um período de tempo e a consulta retorna os clientes que não pagaram neste período.

    A minha dúvida é a seguinte... Gostaria de extrair todos os meses que o cliente não pagou...

    Por exemplo: cliente 1 pagou os meses

    04, 05, 07, 09 e 11

    O sistema deverá informar os meses 06, 08 e 10.

    Se existir uma possibilidade de resolver meu problema eu agradeço, pois já tentei diversas formas que corrigí-lo.

    Agradecido,

    Rodrigo

    Para ajudá-lo na confecção de sua select necessito de mais informações (não precisam ser reais apenas um modelo do que você quer). Uma pequena estrutura com os campos mais importantes, tais como: data de pagamento (com informação de preenchimento obrigatório ou não), data de vencimento (com informação de preenchimento obrigatório ou não), etc.

    Se constam no cadastro somente a data do pagamento

    att

    Denis Courcy

  22. Olá pessoal, tudo bom?

    O meu algoritmo se o usuario digitar uma data válido, exemplo: 31/1/2007 vai imprimir na tela: Data é valida, porem se o usuario digitar 32/1/2007 o comando else não funciona e com isso não imprimi na tela: "writeln" ('Data é inválida!');

    OBS.: Até o momento eu não aprendi a trabalhar com Vetor, Matriz, Case.

    Obrigado aí galera pela ajuda.

    Oi, Martinsr!

    Seu algorítimo está errado. Observe o pseudo código abaixo e adapte-o a sua necessidade.

    Se ano >= mínimo_desejado e ano <= máximo_desejado então
       (Ano válido)
       Se mês >= 1 e mês <= 12 então
          (mês válido)
          Se (mês = 1 ou mes =  3 ou mês =  5 ou mês = 7 ou 
              mês = 8 ou mês = 10 ou mês = 12) e (dia >= 1 e 
              dia <= 31) então
              (dia válido)
          Senão
             Se (mês = 4 ou mês = 6, ou mês = 9 ou mês = 11) e 
                (dia >= 1 e dia <= 30) então
                (dia válido)
             Senão
                Se (Resto da divisão de ano = 0) e (dia <= 1 e 
                   Dia <= 29) então
                   (mês = Fevereiro Bissexto e Dia Válido)
                Senão
                   Se (Resto da divisão de ano diferente de 0) e
                      (dia <= 1 e dia <= 28) então
                      (mês = Fevereiro não Bissexto e Dia Válido)
                   Senão
                      (dia inválido)
                   Fim Se
                Fim Se
             Fim Se
          Fim Se
       Fim Se
    Fim Se

    att Denis Courcy

  23. Oi denis,

    executei os comandos que você falou, parecia que tinha dado tudo certo, mas ele não criou o banco... sabe algum motivo para isso?

    Obrigada!

    Oi, Cintia!

    1- Você tomou o cuidado que falei para não sobreescrever dois bancos com o mesmo nome?

    2- No comando do mysqldump você substituiu a string {nome_do_banco} pelo nome do banco de dados que você está querendo backupear?

    3- Se a resposta para as duas perguntas acima foram SIM, então verifique se as tabelas do banco que você está querendo backupear não foram inseridas inadivertidamente em outro banco de dados.

    4 - Você utilizou um usuário com GRANT total? Tipo root em substituição a string {usuario}?

    5 - Se não utilizou, refaça a operação com um usuário que tenha plenos poderes para esta operação.

    mysqlsump -u {usuario} -p --opt {nome_do_banco} > arquivo_backup.sql

    mysqlsump -u {usuario} -p --opt {nome_do_banco} --result-file=backup.sql

    Verifique, por favor e informe o resultado. Pois esta prática eu utilizo direto e raramente dá problema. Quando tem problema eu refaço a operação.

    att

    Denis Courcy

  24. Fala aí rapaziada, estou tentando fazer um INSERT com um SELECT, mas não estou conseguindo. Alguém poderia me ajudar?

    Separadamente, o SELECT funciona perfeitamente. Segue:

    INSERT INTO ATEPSICOPMK (PMKCODIGO, ATPCODIGO, APPVALORDIREITA, APPVALORESQUERDA) VALUES

    SELECT PMKCODIGO, 3, APPVALORDIREITA, APPVALORESQUERDA

    FROM ATEPSICOPMK

    INNER JOIN ATENDIMENTOPSICO ON ATEPSICOPMK.ATPCODIGO = ATENDIMENTOPSICO.ATPCODIGO

    WHERE ATENDIMENTOPSICO.ATPCODIGO = 3

    Olhei na documentação do MySql 5.1, e vi que é possível (pelo menos na teoria) fazer esse INSERT criando réplicas de registro da própria tabela.

    Att

    Qual o erro que está reportando?

    Pelo que vi se você retirar a cláusula VALUES o código funcionará.

    att

    Denis Courcy

×
×
  • Criar Novo...