Ir para conteúdo
Fórum CódigoFonte.net

nldj

Membros
  • Total de itens

    14
  • Registro em

  • Última visita

  1. Alguém pode me ajudar? Tenho a seguinte query: select cc.CampoConhecimento, COUNT(distinct(cc.idCv)) as Total, count(CASE WHEN cc.NivelConhecimento = 1 OR cc.NivelConhecimento = 0 OR cc.NivelConhecimento IS NULL THEN 'Basico' ELSE NULL END) as Basico, count(CASE WHEN cc.NivelConhecimento = 2 THEN 'Intermediario' ELSE NULL END) as Intermediario, count(CASE WHEN cc.NivelConhecimento = 3 THEN 'Avancado' ELSE NULL END) as Avancado from tblCurriculoConhecimento cc inner join tblCadastro_Curriculo_Incompleto cv on cv.IdCV = cc.idCV where cv.Ativo = 'S' and (cv.Sexo = 'M' or cv.Sexo = 'F') and cv.Excluido = 'N' and ((YEAR(CURDATE())-RIGHT(REPLACE(cv.DtNascimento, '/', ''),4) >= 16 or (datediff(YEAR(ifnull(date(cv.DataUpdate),date(cv.DataCadastro))),CURDATE()) + YEAR(CURDATE())-RIGHT(REPLACE(cv.DtNascimento, '/', ''),4)) >= 16) and (YEAR(CURDATE())-RIGHT(REPLACE(cv.DtNascimento, '/', ''),4) <= 97 or (datediff(YEAR(ifnull(date(cv.DataUpdate),date(cv.DataCadastro))),CURDATE()) + YEAR(CURDATE())-RIGHT(REPLACE(cv.DtNascimento, '/', ''),4)) <= 97)) group by cc.CampoConhecimento order by cc.CampoConhecimento asc; Que em 40s me retorna isso: Access 53593 42482 8937 2174 ASP 13271 12963 241 67 AutoCad 20740 15637 3335 1768 C 15261 13903 1093 265 CMais 15666 14284 1118 264 Cobol 12826 12670 109 47 CorelDraw 22418 18069 3192 1157 CSS 33043 27538 4350 1155 Dbase 13049 12839 167 43 Delphi 13226 12901 248 77 Dreamweaver 16216 14578 1223 415 Excel 110420 50002 43771 16647 Flash 17492 15713 1370 409 HTML 50819 38377 9210 3232 Java 15566 14204 1092 270 JavaScript 37677 31640 4869 1168 Linux 19782 17101 2141 540 Macintosh 15491 14245 854 392 MSSQLServer 32612 28300 3625 687 MySQL 32499 27919 3786 794 Net 13734 13095 472 167 Oracle 13711 13240 400 71 Outlook 31534 17714 8555 5265 Photoshop 25695 19547 4478 1670 PHP 14189 13439 594 156 PowerPoint 108758 46837 41646 20277 Sharepoint 12803 12657 102 44 Windows 34045 16383 10059 7603 Word 112999 39167 45279 28554 Para esse resultado eu criei os índices: ALTER TABLE tblCurriculoConhecimento ADD INDEX (idCV,CampoConhecimento,NivelConhecimento); ALTER TABLE tblCurriculoConhecimento ADD INDEX (CampoConhecimento,idCV); ALTER TABLE tblCadastro_Curriculo_Incompleto ADD INDEX (Sexo,Ativo,Excluido,DtNascimento,DataUpdate,DataCadastro,Estado,Cidade,TipoDeficiencia,Instituicao,Curso,Dia,Ano,Nome,CPF,Email); O cv.IdCV é um PRMARY KEY. Eu adicionei no INDEX campos a mais em relação a esta consulta, porque em certos momentos eles serão usados. O EXPLAIN tá me retornando isso: 1 SIMPLE cv index PRIMARY Sexo 1335 null 203349 Using where; Using index; Using temporary; Using filesort 1 SIMPLE cc ref idCV idCV 5 cv.IdCV 4 Using where; Using index Eu queria saber aonde estou errando. Porque minha index "Sexo" não está sendo usada corretamente. E como posso melhorar isso. Por favor. Obrigado,
  2. nldj

    Em busca do melhor índice

    Vejam, por favor, se conseguem me ajudar a otimizar essa query para melhorar a performance desta consulta mySql que do jeito que está, leva cerca de 90 seg para exibir o resultado. select aa.IdArea, aa.Nome, COUNT(DISTINCT(ca.idCV )) as QtdcvAreaAtuacao from tblareaatuacao aa inner join tblcurriculoareaatuacao ca on ca.idAreaAtuacao = aa.IdArea inner join tblcadastro_curriculo_incompleto cv on cv.IdCV = ca.idCV where cv.Ativo = 'S' and cv.Excluido = 'N' and ((YEAR(CURDATE())-RIGHT(REPLACE(cv.DtNascimento, '/', ''),4) >= 16 or (datediff(YEAR(ifnull(date(cv.DataUpdate),date(cv.DataCadastro))),CURDATE()) + YEAR(CURDATE())-RIGHT(REPLACE(cv.DtNascimento, '/', ''),4)) >= 16) and (YEAR(CURDATE())-RIGHT(REPLACE(cv.DtNascimento, '/', ''),4) <= 97 or (datediff(YEAR(ifnull(date(cv.DataUpdate),date(cv.DataCadastro))),CURDATE()) + YEAR(CURDATE())-RIGHT(REPLACE(cv.DtNascimento, '/', ''),4)) <= 97)) group by aa.IdArea, aa.Nome order by aa.Nome asc; Indexes: tblareaatuacao.IdArea(int) - 159 row(s) returned 0.000 sec / 0.000 sec tblcurriculoareaatuacao.idCV(char) e tblcurriculoareaatuacao.idAreaAtuacao(int) - 402183 row(s) returned 0.000 sec / 2.125 sec tblcadastro_curriculo_incompleto.IdCV(int) - 201408 row(s) returned 0.016 sec / 19.046 sec Qual seria os índices que devo criar para eu obter um desempenho melhor? Obrigado,
  3. nldj

    select count case

    preciso fazer um select assim: Select count(CASE WHEN tbl1.dtCadastro = CURDATE() THEN '' ELSE NULL END) as qtdDia, tbl2.id from tbl1 inner join tbl2 on tbl2.id = tbl1.id and tbl2.id = 123 where tbl1.int = 190273 eu quero que o Count me traga q a quantidade de registros no dia, e por por conta do tbl2.id = 123 ele está trazendo apenas um alguém pode me ajudar, por favor?
  4. nldj

    foreach dentro de for na View

    <?php for ($x = 1; $x <= 3; $x++) { ?> <select class="form-control" name="AreaAtuacao<?php echo $x?>" id="AreaAtuacao<?php echo $x?>" required="required"> <option value="">Selecione</option> <?php foreach ($this->view->areaAtuacao as $areaAtuacao):?> <option value="<?php echo $areaAtuacao['IdArea']?>" <?php if($x == $x && $this->view->$AreaAtuacao == $areaAtuacao['IdArea']){echo 'selected';}?>><?php echo $areaAtuacao['Nome']?></option> <?php endforeach;?> </select> <? } consigo construir 3 vezes a HTML select tag pelo for, mas só no primeiro loop o foreach funciona. o que estou fazendo errado? qual o jeito correto de fazer? em procedural antes dava certo.
  5. nldj

    Migração de banco de dados

    Tenho um site em PHP que utiliza MS-SQL e estou querendo migrar para MySQL. A questão é que vou ter que desenvolver toda a programação de querys, etc...então eu poderia refazer a estrutura de banco tudo do zero, dar novos nomes de colunas e tabelas, mesmo porque tem campos inutilizados, criados inadequadamente, e vou precisar acrescentar coisas novas, mas, receio que recriar vai me dar mais trabalho depois na hora de importar os dados de um para outro, do que se eu utilizasse a mesma estrutura de tabelas, colunas, nomes, tipos de campos, etc. Vocês que são mais experientes e já passaram por isso, o que me aconselham a fazer?
  6. nldj

    Abrir duas conexões simultaneamente

    Atualmente uso ADO para conectar o PHP com meu bd MS-SQL $conn = new COM ("ADODB.Connection") or die("Nâo foi possível carregar o ADO"); $connStr = "PROVIDER=SQLNCLI10;SERVER=".$dbhost.";UID=".$user.";PWD=".$password.";DATABASE=".$db; $conn->open($connStr); ******************************************* Para a consulta utilizo a seguinte instrução: $sql = "select * from tabela "; $rs = $conn->execute($sql); if(!$rs->EOF){ while (!$rs->EOF){ $rs->MoveNext(); } } $rs->Close(); $rs = null; ******************************************* No entanto, preciso fazer um select union utilizando tabelas distintas de banco de dados diferente: $sql = "select email banco1.dbo.tabela "; $sql = $sql . "union "; $sql = $sql . "select email banco2.db o.tabela "; ******************************************* Eu gostaria de saber como faço para estabelecer duas conexões simultaneamente e instanciar a consulta de dois bancos na mesma instrução SQL???
  7. nldj

    Exibir IP da máquina local - PHP

    Tenho uma rede interna a qual 5 usuários com login e senha acessam nosso admin via web. A rede está configurada IPv4 para obter um endereço de IP automaticamente, mas posso alterar isso tanto na máquina local, quanto definir pelo MAC um IP reservado para cada usuário no DHCP do roteador . Quando através da minha aplicação hospedada na Locaweb eu tento pelo PHP recuperar o IP da máquina local, só consigo exibir o que recebo dinamicamente do provedor, a qual está como WAN em meu roteador. Então por ex: Minha WAN é 201.3.212.112 e pelo ipconfig meu computador em rede é 192.168.1.100...eu quero que o PHP exiba 192.168.1.100 Tem algum jeito de fazer isso?
  8. nldj

    Select count distinct group by

    Tenho uma tabela que gravo o idioma e a fluência do candidato. Por ex: Candidato Idioma Fluência 1 Inglês 1 2 Espanhol 3 3 Francês 2 Quero saber quantos candidatos tem inglês, espanhol e francês básico, avançado e intermediário. Para isso, eu faço o seguinte: select Idioma, COUNT(distinct(Candidato)) as Total, count(CASE WHEN Fluência = 1 THEN 'Básico' ELSE NULL END) as Básico, count(CASE WHEN Fluência = 2 THEN 'Intermediário' ELSE NULL END) as Intermediário, count(CASE WHEN Fluência = 3 THEN 'Avançado' ELSE NULL END) as Avançado from tabela group by Idioma O resultado é: Idioma Total Básico Intermediário Avançado Inglês 2 2 0 0 Espanhol 3 1 1 1 Francês 1 0 1 0 Porém, se tiver um registro duplicado, ou seja, de dois candidatos, se um aparecer 3 vezes e outro 2 vezes na tabela com o Inglês básico, o resultado vai ser assim: Idioma Total Básico Intermediário Avançado Inglês 2 5 0 0 Espanhol 3 1 1 1 Francês 1 0 1 0 Como eu faço nesse caso para contar somente os registros únicos?
  9. por ex: i, c, sa, sb, scs s, c, sa, sb so i, n, s, c, l, o, at, g, cgv, sa, sb, scs se eu fizer: campo like '%s%', traz os 4 resultados preciso q traga somente esses 2: s, c, sa, sb i, n, s, c, l, o, at, g, cgv, sa, sb, scs
  10. nldj

    criar uma linha com select option

    obrigado! achei um exemplo simples usando a biblioteca bootstrap-slider versão 9.9.0 e agora to com dificuldade de colocar um evento para chamar uma função que tenho... meu código tá assim: <input id="ex12c" type="text" /> <script> $("#ex12c").slider({ id: "slider12c", min: 16, max: 36, range: true, value: [19, 23] }); var sliderC = new Slider("#ex12c", { id: "slider12c", min: 16, max: 36, range: true, value: [19, 23] }); </script> se tentar chamar no JQuery assim, não funciona: $("#ex12c").change(function(){ return minhaFunction(this.value); }); se eu colocar direto na input, funciona mas fica num loop infinito: <input id="ex12c" type="text" onchange="minhaFunction(this.value)" /> o ideal era chamar a função quando soltasse o range... alguma solução onkeyup?
  11. nldj

    criar uma linha com select option

    alguém sabe como eu faço para criar uma linha igual da imagem para clicar segurando com o botão esquerdo do mouse e arrastar as duas pontas pra esquerda e direita até o valor desejado?
  12. nldj

    Montar string com array

    Obrigado pela ajuda. Já consegui! <script> function teste(){ var params = ''; var el = document.getElementById("pai"); for(var e = 0; e < el.children.length; e++){ var count = 0 var valor = ''; for (i = 0; i < document.getElementById(el.children[e].id).querySelectorAll('input').length; i++){ if(document.getElementById(el.children[e].id+i).checked == true){ var par = el.children[e].id; count ++; if(count > 1){ valor = valor+','+document.getElementById(el.children[e].id+i).value; }else{ valor = document.getElementById(el.children[e].id+i).value; } } } if(valor){ if(params != par){ var string = string+'&'+par+'='+valor; }else{ var string = par+'='+valor; } } params = par; } alert(string.replace("undefined&", "")); } </script> <body> <div id='pai'> <div id='filho1'> <input id='filho10' type="checkbox" value="bonito" onClick="teste();"> <input id='filho11' type="checkbox" value="simpatico" onClick="teste();"> <input id='filho12' type="checkbox" value="divertido" onClick="teste();"> </div> <div id='filho2'> <input id='filho20' type="checkbox" value="cheiroso" onClick="teste();"> <input id='filho21' type="checkbox" value="inteligente" onClick="teste();"> <input id='filho22' type="checkbox" value="solteiro" onClick="teste();"> </div> <div id='filho3'> <input id='filho30' type="checkbox" value="casado" onClick="teste();"> <input id='filho31' type="checkbox" value="bastardo" onClick="teste();"> <input id='filho32' type="checkbox" value="preguiçoso" onClick="teste();"> </div> </div>
  13. nldj

    Montar string com array

    tenho divs filho dentro de uma div pai... tenho inputs checkbox dentro de cada div filho <div id='pai'> <div id='filho1'> <input id='1' type="checkbox"> <input id='2' type="checkbox"> <input id='3' type="checkbox"> </div> <div id='filho2'> <input id='a' type="checkbox"> <input id='b' type="checkbox"> <input id='c' type="checkbox"> </div> <div id='filho3'> <input id='x' type="checkbox"> <input id='y' type="checkbox"> <input id='z' type="checkbox"> </div> </div> preciso percorrer cada div filho pra descobrir quem está checked e montar uma string com o id da div filho mais o valor da input checkbox... exemplo: filho1=bonito&filho2=inteligente&filho3=bastardo caso esteja checked mais de um checkbox do mesmo filho, preciso da string assim: filho1=bonito,preguiçoso,solteiro&filho2=inteligente,casado&filho3=bastardo alguém pode me ajudar, por favor? Obrigado,
  14. eu to usando o AJAX com o evento OnChange e preciso do valor da Option para passar na URL do AJAX que servirá para requisitar a página ASP com uma variável... Ex: <script type="text/javascript"> document.getElementById('select1').value = IdIE </script> <form name="Form" action="#" method="post"> <div id="1"> <select name="select1" id="select1" OnChange ="AJAX('Pag.asp?Id=javascript:IdIE','POST','true','1','action=carregar');" style="cursor:pointer;"> <option value="qualquer coisa"></option> </select> </div> </form> Como eu faço para passar esse valor como variável pela URL do AJAX???
×