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, 'Marco Canhoto'! Se você instalou a versão 5.x ou superior, então você deverá criar, na máquina onde está o servidor, um usuário root@% com todos os direitos de acesso.
  2. Oi 'Giuliano Rezende' Tenta assim: SELECT b.banco, aplicacao, resgate, rendimento FROM banco b LEFT JOIN (SELECT banco, SUM(valor) as aplicacao FROM aplicacoes GROUP BY banco) a ON a.banco = b.banco LEFT JOIN (SELECT banco, SUM(valor) as resgate FROM resgates GROUP BY banco) rs ON rs.banco = b.banco LEFT JOIN (SELECT banco, SUM(valor) as rendimento FROM rendimentos GROUP BY banco) re ON re.banco = b.banco
  3. Oi,'Tchello' É só usar a função sum no campo duração. O MySQl converte automaticamente de varchar para integer ou double.
  4. Oi, 'Tchello' Hoje, pela manhã, a resposta que dei a esta questão 2 Select com Union All e com 2 Aliases tem o mesmo raciocínio do que você quer. Tenta resolver. Se não conseguir posta novamente.
  5. Denis Courcy

    Duvida Select

    Oi, 'shakall'! Dê uma olhada na seção 3.3.4.7. Combinação de padrões do manual do MySQl versão 4.1 (tradução em português). Procure por REGEXP e por STRCMP(expr1,expr2) (também encontrado em 6.3.2.1. Funções de Comparação de Strings)
  6. Oi, 'mestre fyoda'! Voce disse: Resposta: É isso mesmo. Os dados da coluna Fechado ficam na coluna Aberto.Para resolver isso faça como abaixo: SELECT e.nome_empresa, a.Aberto, f.Fechado FROM Empresa e INNER JOIN (SELECT codigo_empresa, Count(codigo_empresa) as Aberto FROM Chamado WHERE status = 1 GROUP BY codigo_empresa) a ON e.codigo_empresa = a.codigo_empresa INNER JOIN (SELECT codigo_empresa, Count(codigo_empresa) as Fechado FROM Chamado WHERE status = 0 GROUP BY codigo_empresa) f ON e.codigo_empresa = f.codigo_empresa
  7. Oi, Anderson! Você mesmo já deu a resposta. você disse Mas é consulta, sim. Por definição, todo SELECT é uma consulta.Use SELECT nome, sal_pessoa AS salario, Hrs_trabalhadas AS horas_trab, (sal_pessoa / hrs_trabalhadas) AS vlr_hora FROM tabela Por analogia a multiplicação ou qualquer exressão matemática é da mesma forma. Dica: Procume tutoriais sobre SQL na net e leia o manual do MySQL da versão que você trabalha.
  8. Oi, cha! Você quase acertou a primeira questão. Faltou parênteses e o campo cidade nas outras condições depois do OR. Assim: $sql = "select * from tb_contrato where produto = $produto and (cidade = $cidade or cidade = $cidade2 or cidade = $cidade3) ORDER BY cod_contrato ASC"; Você poderia fazer assim, também:$sql = "select * from tb_contrato where produto = $produto and cidade IN ('$cidade', '$cidade2', '$cidade3') ORDER BY cod_contrato ASC"; A resposta a sua segunda questão é só colocar a negativa no segundo exemplo que passei acima. Assim:$sql = "select * from tb_contrato where produto = $produto and NOT cidade IN ('$cidade', '$cidade2', '$cidade3') ORDER BY cod_contrato ASC";
  9. Tenta assim: SELECT * FROM tabela WHERE cod = 1 AND (campo1 IS NULL OR campo2 IS NULL OR campo3 IS NULL OR campo4 IS NULL OR campo1 IS NULL OR campo5 IS NULL OR campo6 IS NULL OR campo7 IS NULL OR campo8 IS NULL)
  10. Oi, Montano! Se o que você entende por empty é que o campo contém nulo, então a pesquisa na cláusula where deve ser por: WHERE campo IS NULL para achar os registros que possuam nulo no campo; ou WHERE campo IS NOT NULL para achar o oposto do acima.
  11. Então, juntando o que você passou acima com seu SQL abaixo : $sql1="SELECT time,callid,arg2 FROM queue_log where $data and callid = '". $registro["callid"] . "' and event='ENTERQUEUE'"; Rode o script abaixo para a inclusão de mais um índice:ALTER TABLE queue_log ADD INDEX queue_log_002 (time, callid, event) Mais uma coisa, pois estou vendo que voê está usando código para resolver coisas que já poderiam ser retornadas em seu SQL. Dê uma olhada no manual do MySQL versão 4.1 (tradução em português) seção 6.3.4. Funções de Data e Hora
  12. Oi, 'Eduardo Assis' Conforme eu suspeitava o problema é a falta de índice. Esta falta de índice está provocando um "TABLE SCAN" que é uma varredura em todos os registros da tbela. A estrutura da tabela, conforme você passou é: CREATE TABLE IF NOT EXISTS `queue_log` ( `id` int(11) NOT NULL auto_increment, `time` datetime NOT NULL default '0000-00-00 00:00:00', `callid` varchar(20) NOT NULL default '', `queuename` varchar(20) NOT NULL default '', `agent` varchar(20) NOT NULL default '', `event` varchar(20) NOT NULL default '', `arg1` varchar(100) NOT NULL default '', `arg2` varchar(100) NOT NULL default '', `arg3` varchar(100) NOT NULL default '', PRIMARY KEY (`id`) ) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=106389; Rode o script abaixo para a inclusão deste índice. ALTER TABLE queue_log ADD INDEX queue_log_001 (event); Ainda falta um índice, mas para isso me informa o que contém a variável $data na query abaixo:$sql1="SELECT time,callid,arg2 FROM queue_log where $data and callid = '". $registro["callid"] . "' and event='ENTERQUEUE'";
  13. Oi,'steiver'! Não vou fazer o serviço pra você, mas vou orientá-lo e corrigí-lo no que for necessário. Para montar a chave estrangeira você poderá usar de duas formas. A primeira é na criação da tabela (dentro do CREATE TABLE). A sintexe é: CONSTRAINT <nome-da_chave_estrangeira> FOREIGN KEY (<nome_do_atributo_1>) REFERENCES <nome_da_tabela_referenciada> (<nome_do_atributo_2>) . A segunda é através de de alteração na estrutura da tabela (dentro do comando ALTER TABLE). A sintaxe é:ALTER TABLE <nome_da_tabela> ADD CONSTRAINT <nome-da_chave_estrangeira> FOREIGN KEY (<nome_do_atributo_1>) REFERENCES <nome_da_tabela_referenciada> (<nome_do_atributo_2>). Onde: <nome_do_atributo_1>: é o nome do atributo que está na tabela que está criando a chave; <nome_do_atributo_2>: é o nome do atributo que é chave primária na tabela referenciada. Para maiores informações, leia o manual do MySQL versão 4.1 (tradução em português) Seções 6.5.3. Sintaxe CREATE TABLE e 6.5.4. Sintaxe ALTER TABLE.
  14. Oi, 'Eduardo Assis' Por favor, poste a estruturas das tabelas para que possamos orientá-lo em como corrigir o problema. Seu problema está na falta ou no mau uso de índices.
  15. Oi, 'Sidinelson10' Não seria assim? SELECT * FROM BG3 INNER JOIN BRA ON BRA.CODMODALIDADE = BG3.CODMODALIDADE
  16. Denis Courcy

    show full tables

    Oi, 'PleaseWaiT' Você já verificou no debug se o nome da tabela está na variável. Se estiver, então o erro pode estar em seu código abaixo: Add('select * from '''+sTable+''' into outfile '''+sDir+''' '); -- Faz a Copia da tabela O correto seria assim:Add('select * from '+sTable+' into outfile "'+sDir+'"'); -- Faz a Copia da tabela
  17. Denis Courcy

    Modelagem de BD

    Oi, 'MnF' "Locação" [u]cod_cliente[/u] [u]cod_filme [/u] (não sei se precisaria o cod_func aqui) No ponto acima entra o código do funcionário, sim, se você quizer saber que alugou o que para quem. Esta tabela "Locação" representará a ligação ternária muitos-para-muitos entre cliente, filme e funcionário. Seu banco está representando direitinho a 3a forma normal. Pode continuar que o caminho está correto. Só para acrescentar: na tabela filme eu acrescentaria um atributo indicando se o filme está locado ou não Na tabela locação eu acrescentaria dois atributos data da locação e data do retorno. Espero ter ajudado.
  18. Oi, 'G.H.C' Voltando ao início, para poder te responder, observe o código abaixo escrito por você no primeiro post deste tópico: select (x.quantidade * y.preco_unitario) from x,y,z where z.item = '10' and z.item = x.item + select (x.quantidade * y.preco_unitario) from x,y,z where z.item = '20' and z.item = x.item Observe que você mencionou 3 tabelas, x, y e z. Você relacionou as tabelas z e x, mas não fez nenhuma ligação com y, o que torna a solução deste problema impossível. Poderia, por favor, postar o básico da estrutura de cada uma das tabelas informando o que cada uma guarda, assim, como as chaves primárias e estrangeiras, para que possamos estudar uma solução.
  19. Oi, 'Andreia Regina' Seu select está invertido. Você está buscando dados na tabela filha e depois na tabela pai. Normalmente isto não causa erro pois com INNER JOIN só serão retornadas as linhas que existirem em ambas as tabelas. Experimente desta forma: SELECT * FROM tb_galerias g INNER JOIN tb_galeria_img gimg ON gimg.galeria_id = g.galeria_id WHERE g.exibir = 'sim' ORDER BY gimg.galeria_id DESC LIMIT 3 Se não funcionar é porque não há dados na tabela tb_galeria_img que se correlacionem com tb_galeria para a condição g.exibir = 'sim'. Para testar troque INNER JOIN por LEFT JOIN Ver manual do MySQL versão 4.1 (Tradução em português) para maiores informações.
  20. Eu tive alguns imprevistros quando mudei de versão do 4 para o 5. A solução que encontrei foi recriar as estruturas em um banco vazio/novo, alterei os seguintes tipos de atributos: Numeric com casa decimal para double Numeric sem casa decimal para integer Carreguei o banco novo com base nos dados do antigo. No seu caso tem mais uma variável que pode estar pesando que é a quantidade de processadores. Vou pesquisar a influencia desta variável e depois te informo.
  21. Oi, 'jhsiqueira' Qual S.Operacional você está usando? Windows? Se sim, dropa o banco e carrega denovo usando o comando SOURCE dentro do mysql.exe.
  22. Oi, 'Renan Hagiwara' Neste caso eu modelaria de forma diferente. Eu não cadastraria o que você chamou de produto 2. Cadastraria apenas o produto 1. Criaria uma tabela de domínio e chamaria de "opcionais". criaria uma tabela de relacionamento (que seria o relacionamento de muitos para muitos entre as tabelas produto e opcionais) e a chamaria de "modelo". Nesta tabela de modelo eu guardaria o código do produto e o código do opcional além de outros campos se fosse o caso. Esta seria a forma correta para a modelagem deste negócio. (atende a 3a forma normal).
  23. Oi, 'Renan Hagiwara' Em resposta a esta primeira dúvida, comento:Campos Char uam o espaço que foi destinado a eles mesmo se estiverem com nulo. Assim, um campo char(10) sempre terá 10 bytes de ocupação. Os campos Varchar usam 1 byte a mais de ocupação. Então, para varchar(4), por exemplo, se contiver nulo ocupa 1 byte na tabela e se contiver (4 bytes, como nesta string, por exemplo "aaaa") ocupará 5 bytes na tabela(Ver seção 6.2.3.1. Os Tipos CHAR e VARCHAR, no manual do mysql (versão 4.1 tradução em português). Os campos Text e Blob usam 2 bytes a mais de ocupação. (Ver seção 6.2.6. Exigências de Armazenamento dos Tipos de Coluna, no manual do mysql (versão 4.1 tradução em português). Se suas tabelas tem muita alteração então é aconselhável evitar o uso de colunas VARCHAR ou BLOB. (Ver seção 5.2.13. Mais Dicas sobre Otimizações no manual do mysql (versão 4.1 tradução em português). Se você ainda assim, utilizar este tipo de campo em tabelas que sofrem muita atiualização, você poderá otimizar (desfragmentar) as tabelas usando o comando OPTIMIZE TABLE. Ver Seção 4.6.1. Sintaxe de OPTIMIZE TABLE no manual do mysql (versão 4.1 tradução em português) Quanto a segunda dúvida Tenho clientes cujos bancos possuem tabelas com mais de 600.000 registros e não há problemas de lentidão. Basta fazer como o Mestre SAM falou neste trecho: . Ao Mestre SAM: Você disse: Tabelas com campo do tipo blob não ficam lentas. A chave está sempre na otimização e o uso correto de índices.
  24. Oi, 'Fernando Pavanin' SQL Server e MySQl naturalmente tem sintaxes diferentes. O MyODBC mais atual está na versão 5.x
×
×
  • Criar Novo...