Ir para conteúdo
Fórum Script Brasil

crazySerk

Membros
  • Total de itens

    95
  • Registro em

  • Última visita

Tudo que crazySerk postou

  1. Olá pessoal, tudo bom? É o seguinte, estou com um problema cabuloso em uma procedure e não estou conseguindo encontrar a solução, a principio até identifiquei o problema, o problema está sendo nesse trecho aqui... - verifica se existe lead criado para o cliente para a mesma data SET @leadExist = 0; SET @sql = CONCAT('SELECT COUNT(*) INTO @leadExist FROM leads_leads where company_id = ',companyId,' and DATE(created_at) = DATE("',DATE,'") and ( ', 'email = "',email,'" or ( ddd = "',ddd_tel,'" and phone = "',tel,'" ) ) limit 1 '); INSERT INTO debug_msg(TEXT) VALUES ( @sql); PREPARE stmt FROM @sql; EXECUTE stmt; DEALLOCATE PREPARE stmt; SET leadExist = @leadExist; Ele está retornando a seguinte mensagem: Error Code: 1064 You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near 'NULL' at line 1 Pelo que estou entendendo o problema é o COUNT(*) está retornando NULO e não pode inserir na variavel @leadExist, seria isso? Certo? Quando eu retiro esse trecho acima a minha procedure executa tudo certo... Já não sei o que fazer mais... Estou rodando a internet para encontrar uma solução porém não consigo encontrar. Se alguém puder ajudar, agradeço!!!
  2. Markus, conseguiria sem utilizar Union?
  3. Galera, tudo bem com vocês? Estou precisando de uma ajuda no seguinte caso. Possuo uma busca de classificados que os usuários podem buscar palavras chaves e encontrar o q esta procurando, até aqui esta ok. O problema é o seguinte, eu preciso ordenar a busca pela palavra chave seguindo a seguinte regra: - o usuario buscou a palavra HOTEL - primeira condição é ver se a palavra existe no NOME da empresa - Segunda condição é verificar se a palavra existe no KEYWORD da empresa Seguindo essa regra a ideia é que se a pessoa buscou o nome HOTEL todas as empresas que possui o termo "HOTEL" (no campo NOME) vai vim primeiro e posteriormente o que estão no keyword. O que eu fiz ate o momento é essa consulta: SELECT nome, keyword FROM empresas_parceiros WHERE 1=1 AND (nome LIKE '%HOTEL%' OR keyword LIKE '%HOTEL%') ORDER BY nome, keyword LIMIT 0, 20 ; A Saída dessa consulta ficou assim: - Hotel Paraguaia - Clinica Veterinaria (possui a palavra hotel no Keyword) - Posto Shell (idem ) - Hotel De Minas Porém a forma correta que precisava exibir era: - Hotel Paraguaia - Hotel De Minas - Clinica Veterinaria (possui a palavra hotel no Keyword) - Posto Shell (idem ) Alguém já passou por algo parecido? Consigo fazer isso no SQL ? Umas das tentativas eu coloquei um "ORDER BY NOME LIKE '%HOTEL%'" mas não adiantou não.... Agradeço a ajuda!
  4. Alguém sabe se é possivel fazer está ação?
  5. Opa salve galera, seguinte.. não sei se é possivel, mas estou tentando fazer um select com campos dinamicos, para tentar explicar melhor e ser mais direto meu select é este aqui: select a.`cod_oportunidade`, b.nome nome_cliente, c.descricao estado, d.descricao cidade, e.nome nome_funcionario_criou, f.nome nome_funcionario_resp, i.`descricao`, ( case when i.`js_dinamico` = 'S' and h.valor <> null then (select @i.js_descricao as descricao from @i.js_tabela where @i.js_valor = h.valor) else h.valor end ) as valor from oportunidades_clientes a left outer join empresas_clientes b on b.cod_cliente = a.cod_cliente left outer join sistema_estados c on c.cod_estado = b.cod_estado left outer join sistema_cidades d on d.cod_cidade = b.cod_cidade left outer join empresas_funcionario e on e.cod_funcionario = a.cod_funcionario_criou left outer join empresas_funcionario f on f.cod_funcionario = a.cod_funcionario_resp left outer join formulario_valor h on h.`cod_oportunidade` = a.`cod_oportunidade` left outer join formulario_campo i on i.`cod_campo` = h.`cod_campo` where 1 = 1 and a.`cod_oportunidade` = 3 Podem perceber dentro do case estou fazendo um outro select, porém os campos e valores estão vindo do meu select principal, porém não está indo, existe uma maneira disso dar certo?
  6. Otimo deu certo aqui! uma outra dúvida, consigo limitar o group_concat ? Exemplo, eu quero apenas 4 nos que apareça, até mesmo porque suponhamos que tenho um groupo com 10000 a string de nome ficará enorme.
  7. Galera to com uma bronca e não sei se vai ser possivel fazer isso tudo no select mas acredito que sim.. Bom, eu preciso fazer uma busca em uma tabela agrupando os valores iguais, ate o momento meu select esta assim. select count(a.cod_sell) as total, a.cod_user, a.message, date(a.date_register) from sell_request a where a.cod_user = 2 and a.cod_check = 7 and a.cod_accepted = 1 group by a.cod_check, a.cod_sell, a.cod_user order by total desc Este select ai está funcionando tranquilo, estou agrupando os valores atraves do Check, Usuario e do Cod_sell.. O problema está sendo o seguinte.. Como que estou agrupando os valores vamos supor que no meu primeiro registro eu vou ter o atributo alias "total" = 3, então nele teremos 3 usuarios certo? O que eu preciso, nesse select colocar a tabela "user"para saber quem são as pessoas que estão no agrupamento, dessa maneira coloquei esse join: select count(a.cod_sell) as total, a.cod_user, a.message, date(a.date_register), b.nick from sell_request a left outer join user b on b.cod_user = a.cod_user where a.cod_user = 2 and a.cod_check = 7 and a.cod_accepted = 1 group by a.cod_check, a.cod_sell, a.cod_user order by total desc Ele me retorna os itens agrupados porem na coluna "NICK" só aparece o nome de 1 usuario, precisava que nessa coluna aparecesse o nome dos 3 usuarios, poderia aparecer com virgula , tracinho, qualquer forma, mas deveria aparecer.. KKKKK O que preciso fazer? Agradeço ajuda antecipadamente!
  8. Denis, fiz a procedure, e o evento porem fiz um teste aqui o meu evento não esta executando... Coloquei pra eexecutar em minutos porem não executou... não aparece erro na hora de compilar nada.. Esqueci de algo? Evento: DELIMITER $$ ALTER DEFINER=`bancoteste`@`%` EVENT `gerarFaturaAssociado` ON SCHEDULE EVERY 24 HOUR STARTS '2015-02-21 00:00:00' ON COMPLETION PRESERVE ENABLE DO BEGIN CALL gerarFaturaAssociado(); END$$ DELIMITER ; Agora no evento acima coloquei pra executar todo dia a meia noite... mas como citei antes não esta funcionando. Fiz o teste pra executar 5 minutos depois mas não foi...
  9. Olá, estou precisando de uma ajuda... Tenho uma tabela que possuo o cadastro de clientes e nela contem um campo "data_vencimento" e "valor", preciso que todo dia execute uma função no banco que verifique está tabela procurando clientes que estão quase chegando na data de vencimento, isso é 5 dias de vencer, encontrando o cliente neste caso faço uma inserção em outra tabela "cliente_pagamento" colocando o cod_cliente, a data de vencimento e o valor, em resumo estou gerando uma fatura para o cliente, explicando de uma forma melhor ficaria mais ou menos assim... Tabela de cliente: Cliente A - Data Vencimento: 25/02/2015 - Valor: 55,00 no dia 20 geraria automaticamente uma inserção na tabela cliente_pagamento. Como que consigo fazer isto pelo banco?
  10. crazySerk

    json php

    Galera tenho este retorno de JSON: { "CLIENT": 61, "NAME": "TESTE ACESSA", "ACESS": [ { "ALL OPTION": "CONFIGURATION" } ] } a minha duvida é como que faço para mostrar o texto "ALL OPTION" e não o que ele possui.. Por exemplo se eu quiser mostrar o que o ALL OPTION tem eu utilizo: $json->{'ALL OPTION'}; Mas ao invés disso preciso mostrar apenas o nome desse Acesso que seria o ALL OPTION. Como que faço isso?
  11. Galera estou usando este select: SELECT * FROM anuncio_popup a WHERE a.status = 'A' AND a.data_inicio >= NOW() AND a.data_final <= NOW() ORDER BY RAND() LIMIT 1 Preciso verificar se a data atual é maior ou igual a data_inicio se for verdade então a campanha está em andamento ou começa no dia. E também preciso checar se a data atual não ultrapassou a data_final, caso a data atual já passou do prazo final não me retorna nada. Bem basicamente está é a logica. A questão é que não me retorna nada esse select apenas vazio, e possuo dados salvo por exemplo uma campanha que começar hoje (19/03) e que termina dia 25/03... O select acima não deveria funcionar?
  12. Galera, to com uma bronca aqui que acredito que seja simples. Bom tenho uma tabela que fica salvo resumos de livros que foram enviados ( as pessoas digitam um resumo do livro e envia ) na tabela eu tenho 2 colunas que são data_envio que é o dia que foi feito o envio do resumo, e a coluna mes_referencia que é para qual mes aquele resumo foi enviado. O que eu preciso agora, gerar um relatorio de todos os usuarios que enviaram resumo, comparando se a Data de envio é o mesmo que o mes referencia, se a condição for verdadeira o usuario ganha uma estrela se não ele ganha uma bolinha vermelha. Dessa maneira eu montei este select: select a.`USUARIO`, (IF((MONTH(a.`DATA_ENVIO`) = 1 and a.`MES_REFERENCIA` = 1),1,0)) AS 'JAN', (IF((MONTH(a.`DATA_ENVIO`) = 2 and a.`MES_REFERENCIA` = 2),1,0)) AS 'FEV', (IF((MONTH(a.`DATA_ENVIO`) = 3 and a.`MES_REFERENCIA` = 3),1,0)) AS 'MAR' from rh_resumos a group by a.`USUARIO` Qual o erro? na tabela eu tenho 2 valores salvos sendo eles 1 resumo enviado no mes de Janeiro e um para Fevereiro, ambos resumos foram enviados no período certo, Porém quando eu executo este select ele traz apenas este resultado: USUARIO | JAN | FEV | MAR Teste | 0 | 1 | 0 O Correto seria: USUARIO | JAN | FEV | MAR Teste | 1 | 1 | 0 O que fiz de errado?
  13. Galera, tenho este select, e está funcionando normalmente, a minha dúvida é a seguinte. Quando não possuo nenhum dado no periodo buscado ele me retorna nada, porém deveria me retornar os campos Enviada, Aprovada... e etc, com os valores 0, pois estou fazendo a soma com 1 ou somando 0 ? SELECT c.`cod_empresa`, c.`cod_loja`, d.nome AS nome_empresa, (SELECT COUNT(cod_proposta) FROM propostas WHERE cod_empresa = c.`cod_empresa` AND cod_loja = c.cod_loja AND data_cadastro = '2014-01-12') AS 'ENVIADA', SUM(CASE WHEN a.`cod_status` = 2 THEN 1 ELSE 0 END) AS 'ANALISE', SUM(CASE WHEN a.`cod_status` = 3 THEN 1 ELSE 0 END) AS 'PENDENTE', SUM(CASE WHEN a.`cod_status` = 4 THEN 1 ELSE 0 END) AS 'REPROVADA', SUM(CASE WHEN a.`cod_status` = 5 THEN 1 ELSE 0 END) AS 'APROVADA', SUM(CASE WHEN a.`cod_status` = 6 THEN 1 ELSE 0 END) AS 'FATURADA', SUM(CASE WHEN a.`cod_status` = 7 THEN 1 ELSE 0 END) AS 'CANCELADA' FROM propostas c LEFT OUTER JOIN propostas_status a ON (a.`cod_proposta` = c.`cod_proposta`) LEFT OUTER JOIN empresas_usuarios b ON b.`usuario` = c.`usuario` LEFT OUTER JOIN empresas_lojas d ON d.cod_loja = c.cod_loja WHERE 1 = 1 AND c.cod_empresa = 6 AND c.cod_loja = 55 AND c.data_cadastro = '2014-01-12' GROUP BY c.`cod_loja` ORDER BY c.`cod_loja`; O que eu posso fazer pra retornar a empresa mesmo que não tenha nada porém com os valores 0 nos campos..
  14. crazySerk

    CADASTRO PHP E MYSQL

    Adicione isso em seu código... ini_set('display_errors',1); ini_set('display_startup_erros',1); error_reporting(E_ALL); E veja o erro que vai aparecer.
  15. Eu utilizo o SqlYog ele faz isso?
  16. Galera estou com uma duvida em relação para atualizar um banco de produção.. por exemplo... Estou com um sistema online(php) rodando, porém vou ter uma copia dele em meu computador para realizar testes e criar novas funcionalidades, quando eu realizar atualizacoes de alguns arquivos no php so irei copiar e jogar para o sistema em produção, porém como faço para gerar um script que atualize as mudanças que realizei no banco de dados... é possivel? ou precisarei realizar manualmente? Obrigado!
  17. Opá agora funcionou perfeitamente... e desculpe ai Denis, banco de dados ainda sou novato, mas agradeço mesmo assim sua boa vontade. Obrigado!
  18. Correto, porém onde colocaria isso na pivot? Nesse trecho aqui? IF (NOT done) AND (M_Column_Field IS NOT NULL) THEN SET M_Columns = CONCAT(M_Columns, ' SUM( CASE WHEN ',P_Column_Field,'=''',M_Column_Field,'''', ' THEN ',P_Value, ' ELSE 0 END) AS `', SELECT mesExtenso(M_Column_Field) ,'`,'); Obrigado novamente, pela sua atenção!
  19. Como que está salvo na BD? Pontos flutuantes? de qualquer maneira, eu utiliza está função para formatar os valores Reais... /** * Função para formatar numeros Floats em Reais */ public function formataReal($numero) { if(strpos($numero,'.')!='') { $var=explode('.',$numero); if(strlen($var[0])==4) { $parte1=substr($var[0],0,1); $parte2=substr($var[0],1,3); if(strlen($var[1])<2) { $formatado=$parte1.'.'.$parte2.','.$var[1].'0'; }else { $formatado=$parte1.'.'.$parte2.','.$var[1]; } } elseif(strlen($var[0])==5) { $parte1=substr($var[0],0,2); $parte2=substr($var[0],2,3); if(strlen($var[1])<2) { $formatado=$parte1.'.'.$parte2.','.$var[1].'0'; } else { $formatado=$parte1.'.'.$parte2.','.$var[1]; } } elseif(strlen($var[0])==6) { $parte1=substr($var[0],0,3); $parte2=substr($var[0],3,3); if(strlen($var[1])<2) { $formatado=$parte1.'.'.$parte2.','.$var[1].'0'; } else { $formatado=$parte1.'.'.$parte2.','.$var[1]; } } elseif(strlen($var[0])==7) { $parte1=substr($var[0],0,1); $parte2=substr($var[0],1,3); $parte3=substr($var[0],4,3); if(strlen($var[1])<2) { $formatado=$parte1.'.'.$parte2.'.'.$parte3.','.$var[1].'0'; } else { $formatado=$parte1.'.'.$parte2.'.'.$parte3.','.$var[1]; } } elseif(strlen($var[0])==8) { $parte1=substr($var[0],0,2); $parte2=substr($var[0],2,3); $parte3=substr($var[0],5,3); if(strlen($var[1])<2){ $formatado=$parte1.'.'.$parte2.'.'.$parte3.','.$var[1].'0'; }else{ $formatado=$parte1.'.'.$parte2.'.'.$parte3.','.$var[1]; } } elseif(strlen($var[0])==9) { $parte1=substr($var[0],0,3); $parte2=substr($var[0],3,3); $parte3=substr($var[0],6,3); if(strlen($var[1])<2) { $formatado=$parte1.'.'.$parte2.'.'.$parte3.','.$var[1].'0'; } else { $formatado=$parte1.'.'.$parte2.'.'.$parte3.','.$var[1]; } } elseif(strlen($var[0])==10) { $parte1=substr($var[0],0,1); $parte2=substr($var[0],1,3); $parte3=substr($var[0],4,3); $parte4=substr($var[0],7,3); if(strlen($var[1])<2) { $formatado=$parte1.'.'.$parte2.'.'.$parte3.'.'.$parte4.','.$var[1].'0'; } else { $formatado=$parte1.'.'.$parte2.'.'.$parte3.'.'.$parte4.','.$var[1]; } } else { if(strlen($var[1])<2) { $formatado=$var[0].','.$var[1].'0'; } else { $formatado=$var[0].','.$var[1]; } } } else { $var=$numero; if(strlen($var)==4) { $parte1=substr($var,0,1); $parte2=substr($var,1,3); $formatado=$parte1.'.'.$parte2.','.'00'; } elseif(strlen($var)==5) { $parte1=substr($var,0,2); $parte2=substr($var,2,3); $formatado=$parte1.'.'.$parte2.','.'00'; } elseif(strlen($var)==6) { $parte1=substr($var,0,3); $parte2=substr($var,3,3); $formatado=$parte1.'.'.$parte2.','.'00'; } elseif(strlen($var)==7) { $parte1=substr($var,0,1); $parte2=substr($var,1,3); $parte3=substr($var,4,3); $formatado=$parte1.'.'.$parte2.'.'.$parte3.','.'00'; } elseif(strlen($var)==8) { $parte1=substr($var,0,2); $parte2=substr($var,2,3); $parte3=substr($var,5,3); $formatado=$parte1.'.'.$parte2.'.'.$parte3.','.'00'; } elseif(strlen($var)==9) { $parte1=substr($var,0,3); $parte2=substr($var,3,3); $parte3=substr($var,6,3); $formatado=$parte1.'.'.$parte2.'.'.$parte3.','.'00'; } elseif(strlen($var)==10) { $parte1=substr($var,0,1); $parte2=substr($var,1,3); $parte3=substr($var,4,3); $parte4=substr($var,7,3); $formatado=$parte1.'.'.$parte2.'.'.$parte3.'.'.$parte4.','.'00'; } else { $formatado=$var.','.'00'; } } return $formatado." "; }
  20. Acredito o que você procura seja o Pivot no Mysql... da uma procurada na parte de Mysql aqui do forum tem uns topicos referente a isso, até uns topicos meus que estou usando o pivot... :D
  21. Denis consegui resolver o problema, porém gostaria de uma ajuda em outro caso, onde que posso mudar no pivot ao invés de mostras as colunas 1,2,3,4... exibir, jan, fev,mar,abr, mai,jun... é possivel?
  22. É que ao invés de mostrar o código da empresa eu to colocando para mostrar o nome da empresa... Bom, mas fiz o teste aqui... alterei para cod_loja, mas mesmo assim não funcionou ele continua repetindo o valor para todas as colunas.. SELECT b.`cod_loja`, COUNT(IF(a.cod_status = 2,1,0)) AS 'ANALISE', COUNT(IF(a.cod_status = 3,1,0)) AS 'PENDENTE', COUNT(IF(a.cod_status = 4,1,0)) AS 'REPROVADA' FROM propostas_status a JOIN propostas c ON (c.`cod_proposta` = a.`cod_proposta`) JOIN empresas_lojas b ON b.`cod_loja` = c.`cod_loja` WHERE c.`cod_empresa` = 6 GROUP BY b.`cod_loja` Denis, fiz uma alteração aqui retirei os coloquei com sub-select.. agora funcionou... SELECT b.`cod_loja`, (SELECT COUNT(cod_status) FROM propostas_status WHERE cod_status = 2 ) AS 'ANALISE', (SELECT COUNT(cod_status) FROM propostas_status WHERE cod_status = 3 ) AS 'PENDENTE', (SELECT COUNT(cod_status) FROM propostas_status WHERE cod_status = 4 ) AS 'REPROVADA', (SELECT COUNT(cod_status) FROM propostas_status WHERE cod_status = 5 ) AS 'APROVADA', (SELECT COUNT(cod_status) FROM propostas_status WHERE cod_status = 6 ) AS 'FATURADA' FROM propostas_status a JOIN propostas c ON (c.`cod_proposta` = a.`cod_proposta`) JOIN empresas_lojas b ON b.`cod_loja` = c.`cod_loja` WHERE c.`cod_empresa` = 6 GROUP BY b.`cod_loja`
  23. Denis, pegando o onibus andando também, tava precisando de algo parecido para separar umas propostas que tenho por status, usando a procedure que você já me passou anteriormente e usando o exemplo dele ai, montei este select... SELECT b.nome AS nome_empresa, COUNT(IF(a.cod_status = 2,1,0)) AS 'ANALISE', COUNT(IF(a.cod_status = 3,1,0)) AS 'PENDENTE', COUNT(IF(a.cod_status = 4,1,0)) AS 'REPROVADA' FROM propostas_status a JOIN propostas c ON (c.`cod_proposta` = a.`cod_proposta`) JOIN empresas_lojas b ON b.`cod_loja` = c.`cod_loja` WHERE c.`cod_empresa` = 6 GROUP BY b.`cod_loja` no caso ai ele está mostrando nas 3 colunas o valor 2 ( possui 2 registros na tabela propostas_status, porém uma proposta o cod_status é 2 e a outra é cod_status = 3 ) Correto seria mostrar: Empresa | ANALISE | PENDENTE | REPROVADA Teste 1 | 1 | 1 | 0 O que coloquei errado nesse select?
  24. crazySerk

    TABELA PHP

    Adiciona um Limit no final do seu select então...
×
×
  • Criar Novo...