-
Total de itens
3.089 -
Registro em
-
Última visita
Tudo que Denis Courcy postou
-
Este não é um erro do MySQL. Vou mover este tópico para a área de PHP.
-
Use a versão que seja compatível com seu linux. O grande problema que vejo é a baixa quantidade de RAM que você possui. Você vai conseguir fazer testes, mas não vai conseguir rodar consultas mais pesadas.
-
Oi, Micheus! O erro ocasionado aí não aparece para o usuário, mas traduz-se em perda de performance, pois o otimizador de consulta do MySQ usará o GROUP BY para fazer as vezes do ORDER BY.
-
Se os nomes dos campos são, respectivamente, char1~4 e level1~4, então faça assim: SELECT char1~4, SUM(level1~4) AS soma FROM usuarios GROUP BY char1~4 ORDER BY soma DESC;
-
Deste modo funcionará. function TdtmSystem.HoraBD: DateTime; var qryTmp: TSQLQuery; begin // Retorna a DATA do Banco de dados... qryTmp := TSQLQuery.Create(Self); try qryTmp.SQLConnection := dtmConexao.SqlCnConexaoBD; qryTmp.SQL.Text := 'SELECT NOW() AS HORA'; qryTmp.Open; Result := qryTmp.FieldByName('HORA').DateTime; qryTmp.Close; finally qryTmp.Free; end; end;
-
Oi, Bruno! Como já comnetei aqui algumas vezes, a chave mágica para a melhora de performance é o índice. Verifique se há indices para os seguintes tabelas/campos: classificados.veiculo veiculos.idv albumclassificados.idc classificados.idc (indice descendente) classificados.idc (indice ascendente) Só para que voce tenha uma idéia, se não há indices e se cada tabela tiver 1000 registros, por exemplo, então o MySQL faria uma pesquisa de 1000 x 1000 x 1000 (1 bilhão de registros) para encontrar o que você necessita, fora o tempo de classificação com GROUP BY e o tempo de ordenação com ORDER BY Demorado né?
-
Pelo que entendi, você está rodando dois executáveis distintos, um chamado pelo outro. Quando acionamos um executável no DOS (Vou mencionar DOS mesmo que seja WINDOWS rodando, pois o Kernel básico trabalha com o mesmo princípio) este aloca um HANDLE (um ponteiro que indicará qual é a primeira posição do executável na RAM) independente de quem está chamando, fazendo com que cada aplicação rodando seja independente, mesmo se for chamada de outra aplicação. Este é o motivo pelo qual acontece o que você comentou acima. Você pode enviar uma ordem de KILL no processo da aplicação filha. Mas você terá que guardar, em uma variável, o HANDLE de execução desta aplicação. Não conheço o delphi o suficiente para orientá-lo como fazer, infelizmente.
-
(Resolvido)Filtro no MySql por ano
pergunta respondeu ao João Paulo Taraciuk de Denis Courcy em Delphi, Kylix
Vou aproveitar este tópico para dar um pitaco na otimização de consultas do MySQL. Quando tratarem com parte de datas na cláusula WHERE evitem usar funções de conversão no lado esquerdo da pesquisa (o lado onde fica o campo). O uso de funções obriga o MySQL a abandonar qualquer tipo de busca com o auxílio de índices, obrigando-o a realizar um TABLE SCAN, varrendo registro por registro da tabela do começo ao fim da mesma. O caso em que o Micheus mencionou exemplifica corretamente esta ação. Se a pesquisa é constante, então seria melhor criar um índice para vd_data. Pois na pesquisa este irá direto até a primeira ocorrência de vd_data = :inicio_mes e parará a consulta imediatamente quando encontrar a última ocorrência de vd_data = :fim_mes além de evitar o retrabalho de ordenação de vd_data. Não esqueça, também, de criar índices para vendedores.id_vendedor, vendas.vd_id_vendedor, items_vendas.id_pedido e vendas.vd_id_pedido; Que evitará a pesquisa recursiva com TABLE SCAN para cada registro de cada tabela. Nota: Isto também vale para qualquer tipo de banco de dados Um Abraço. -
Uma forma simples para acesso ao sistema é criar uma tabela com um campo, do tipo cha(4), para cada item de menu, mais um campo identificador que deverá estabelecer ligação com a tabela de usuário, e outro para a descrição(nome do perfil). Os valores dentro dos campos char são 'I' = acesso a inclusão, 'A' = acesso a alteração, 'E' = acesso a exclusão e 'C' acesso a consulta. Se o campo estiver em branco o sujeito perdeu o acesso e o menu não deverá ser exibido para este usuário. Em cada form, no create form, dever-se-a ler esta tabela para este usuário e habilitar os acessos de IAE para ele conforme os direitos dados previamente. A vantegem deste tipo de modelo é você poder dar a vários usuários o mesmo perfil. ou Criar um perfil único para um único usuário.
-
Oi, 'Ak!rA'! Já criou o usuário root@% com todos os direitos? Sem isto ninguém acessa o MySQL 5.x fora de localhost.
-
Oi, George! Vou citar duas soluções rápidas e fáceis de serem aplicadas Primeira solução: SELECT DISTINCT YEAR(minhadata) AS ANO, MES(minhadata) AS MES FROM tabela Segunda solução: SELECT DISTINCT SUBSTRING(minhadata, 1, 7) AS MINHADATA FROM tabela
-
Não creio que este seja um problema do MySQL Vou mover este tópico para o forum de PHP. Lá eles poderão te ajudar melhor.
-
É como te falei antes. isto é linguagem e não lembro mais como se usa. Vou catar um livro em casa e, amanhã, ver como posso ter ajudar. Mas a versão que tenho creio não ter estes novo atributos de www.
-
Conforme ele for escolhendo você terá que ir acumulando (um a um) em uma matriz ou em uma tabela temporária. para então descarregar quando ele confirmar a operação.
-
Você terá que gerar uma procedure que rode o repositório onde você guardou a informação, durante a coleta feita pelo usuário e gravar em aluguer_compra usando um insert do tipo: INSERT INTO aluguer_compra (alg_comp_id, alg_comp_inicio, alg_comp_fim, alg_film_id, alg_user_id, alg_comp_def) VALUES (max, sysdate, IF(escolha = ‘C’, sysdate, DATE_ADD(sysdate, INTERVAL dias DAY), filmeid, usuarioid, escolha); Onde max é uma variável com o maior id da tabela + 1. (Não lembro como o oracle incrementa um número automaticamente). Escolha é a variável que leu o checkbox da tela e em seu conteúdo tem ‘C’ ou ‘A’ Dias é uma variável que contém o número de dias de aluguel do filme. Estas variáveis são criadas em seu PLSQL e não sei como isto funciona. Uma vez gravada esta informação e durante este loop você poderá acumular os dados para o recibo/fatura. Acho que é isso.
-
Oi, Mszx! Desculpa a demora estava ocupado. Hoje o dia está movimentado aqui no trabalho. Na tabela abaixo você fala do detalhe da fatura com apenas 2 campos. Quem é det_fact_alg_id? como saber que filme foi vendido/alugado? Onde você controla isto? Você não esqueceu nenhuma estrutura quando postou o primeiro tópico? drop table detalhe_factura cascade constraints; create table detalhe_factura (det_fact_id number(10) not null, det_fact_alg_id number(10) not null); drop table recibo cascade constraints; create table recibo (recibo_id number(10) not null, recibo_alg_id number(10) not null, recibo_dat_emissao date not null, recibo_custo_total number(10) not null, recibo_iva number(2) not null, recibo_descontos number(2));
-
PL SQL ORACLE? Sim ORACLE Quanto a PL/SQL não posso te ajudar no momento. Há mais de 5 anos que não vejo isso. Desde a versão 8. Se suas perguntas se limitarem a SQL e/ou SQL ANSI, poderei continuar a ajudá-lo. Pois o MySQL é um banco que usa um padrão da ORACLE em seu engine InnoDB.
-
Que linguagem de programação você está usando?
-
Oi, Beraldo! Realmente não há uma função específica na versão que ele está utilizando. TIMEDIFF retorna em Hora Minutos e segundos e DATEDIFF retorna em dias. Neste caso a melhor solução é que o programa dele permaneça como está. ou seja, fazendo os cálculos pelo PHP.
-
Oi, 'Mszx'! Acho que o que você está querendo é algo do tipo: SELECT f.film_nome, c.cat_designacao, IF(alg_comp_def = 'C', 'COMPRA', 'ALUGUEL') AS status, alg_comp_inicio, alg_comp_fim FROM aluguer_compra ac INNER JOIN utilizador u ON ac.alg_comp_user_id = u.user_id INNER JOIN filme f ON ac.alg_comp_film_id = f.film_id INNER JOIN categoria c ON f.film_cat_id = c.cat_id WHERE ac.alg_comp_user_id = usuariodesejado Verifique e informe novamente em caso de dúvidas.
-
O programa para a linha de comando é o mysql. No shell do Linux ou no command do windows digite mysql -u root -p Ele vai te pedir a senha do root. Se não pedir é porque não tem. Âo entrar no servidor do banco você terá um prompt assim: mysql> digite mysql> SOURCE nomedoscript; espere até o fim da carga do banco. confira a carga do banco com o comando: mysql> SHOW DATABASES; confira as tabelas com os comandos: mysql> USE nomedobanco; mysql> SHOW TABLES; Não esqueça de colocar o ponto e virgula. Ele é quem determina que o comando terminou ali. Para sair digite mysql> QUIT É só. Não esqueça de ler o manual da versão do mysql que você usa. Ele é a melhor opção de instrução dobre o banco.
-
Estou transferindo sua solicitação para a área de PHP, pois sua dúvida não é específica sobre mysql. Lá, ele te auxiliarão melhor.
-
Seu raciocínio está certo. Mas você pode melhorar, ligando a tabela estrutura nete join e buscar pelos descritivos das estruturas. Seria algo assim: SELECT * FROM pousadas p INNER JOIN pousada_estrutura pe ON p.pou_n_codigo = pe.pou_n_codigo INNER JOIN estrutura e ON pe.inf_n_codigo = e.inf_n_codigo WHERE e.nomedaestrutura = 'AR CONDICIONADO' AND e.nomedaestrutura = 'ANIMAIS ESTIMACAO'
-
Leia sempre o manual. É gratuito e tem \as informações certas para sua versão do MySQL.