22/07/2015 Database / querys

 

$latitude = -23.0006704;
$longitude = -43.3921967;

SELECT
    colaboradores.id, colaboradores.latitude, colaboradores.longitude, colaboradores.cidade,
    
    CAST(
          6371 
          * acos (
          cos(radians( $latitude )) *
          cos(radians( colaboradores.latitude)) *
          cos(radians( colaboradores.longitude) - 
          radians( $longitude )) +
          sin(radians( $latitude )) *
          sin(radians(colaboradores.latitude))
        )
    AS UNSIGNED) AS distance,    
    
    GROUP_CONCAT(telefones.numero) as telefone, 
    GROUP_CONCAT(operadoras.txtOperadora) as operadora,
    (SELECT GROUP_CONCAT(colaboradores_servicos.servico_id) from odete.colaboradores_servicos where colaboradores_servicos.colaborador_id in (colaboradores.id)) as idServico,
    (SELECT GROUP_CONCAT(servicos.txtServico) from odete.servicos inner join odete.colaboradores_servicos on colaboradores_servicos.servico_id = servicos.id where colaboradores_servicos.colaborador_id in (colaboradores.id)) as servico
        
FROM (odete.colaboradores)
        
    INNER JOIN odete.telefones ON colaboradores.id = telefones.colaborador_id
    INNER JOIN odete.operadoras ON operadoras.id = telefones.operadora_id        

WHERE tipo_colaborador =  'COLABORADOR'

GROUP BY colaboradores.id

Having distance < 100;

 

17/07/2015 Database / querys

I was developing a query that returns the records from the website database Odete.me

I'm heavily using GROUP_CONCAT because I want the result to be grouped in one line.

After I did the query, I had to turn into query CODEGNITER because it is the framework that I'm using.

MYSQL QUERY

SELECT
    colaboradores.id,
    GROUP_CONCAT(telefones.numero) as telefone, 
    GROUP_CONCAT(operadoras.txtOperadora) as operadora,
    (SELECT GROUP_CONCAT(colaboradores_servicos.servico_id) from odete.colaboradores_servicos where colaboradores_servicos.colaborador_id in (colaboradores.id)) as idServico,
    (SELECT GROUP_CONCAT(servicos.txtServico) from odete.servicos inner join odete.colaboradores_servicos on colaboradores_servicos.servico_id = servicos.id where colaboradores_servicos.colaborador_id in (colaboradores.id)) as servico
        
FROM (odete.colaboradores)
        
    INNER JOIN odete.telefones ON colaboradores.id = telefones.colaborador_id
    INNER JOIN odete.operadoras ON operadoras.id = telefones.operadora_id
        
WHERE tipo_colaborador =  'COLABORADOR'
GROUP BY colaboradores.id

CODEGNITER QUERY

            $this->db->select('colaboradores.id, colaboradores.nome, colaboradores.sobrenome, colaboradores.email, colaboradores.uf, colaboradores.cidade, colaboradores.bairro, colaboradores.valor, colaboradores.idfacebook, GROUP_CONCAT(telefones.numero) as telefone, GROUP_CONCAT(operadoras.txtOperadora) as operadora, (SELECT GROUP_CONCAT(colaboradores_servicos.servico_id) from colaboradores_servicos where colaboradores_servicos.colaborador_id in (colaboradores.id)) as idServico, (SELECT GROUP_CONCAT(servicos.txtServico) from odete.servicos inner join colaboradores_servicos on colaboradores_servicos.servico_id = servicos.id where colaboradores_servicos.colaborador_id in (colaboradores.id)) as servico');
            $this->db->from('colaboradores');
            $this->db->join('telefones', 'colaboradores.id = telefones.colaborador_id', 'inner');
            $this->db->join('operadoras', 'operadoras.id = telefones.operadora_id', 'inner');
            $this->db->where('tipo_colaborador', 'COLABORADOR');
            $this->db->group_by('colaboradores.id');
            $query = $this->db->get()->result();

            foreach ($query as $row){
                 $row->operadora = explode(",", $row->operadora);
                 $row->telefone = explode(",", $row->telefone);
                 $row->servico = explode(",", $row->servico);
                 $row->idServico = explode(",", $row->idServico);
            }

echo json_encode($query);

http://odete.me

 

 

14/01/2010 Database / querys

DELETE from base_emails WHERE nome IN (SELECT MAX(nome) FROM base_emails GROUP by nome HAVING COUNT(nome)>1);

 

14/01/2010 Database / querys

select nome, count(nome) from base_emails group by nome having count(nome)>1

 

03/11/2008 Database / querys
  1. Select para localizar duplicados
        select campo,campo1,count(*)
         from tabela having count(*) > 1
        group by campo,campo1
  2. Como deletar duplicados
       delete from tab p1
       where rowid < (select max(rowid)
                        from tab1 p2
                       where p1.primary_key = p2.primary_key);