2016-10-09 2 views
0

Ich versuche, die Liste der 'Clinicas' mit Ihren 'Telefones_clinicas' und 'Planos_clinicas' zurückzugeben. Ich könnte mehr als ein "Telefon" -Kliniken und "Planos" -Kliniken haben, aber es ist nicht erforderlich.Wiederholtes SQL-Ergebnis in JOIN - Codeigniter

Aber wenn ich mehr als ein 'telefones_clincias' oder 'planos_clinicas' habe, wird mein SQL-Ergebnis doppelt zurückgegeben. Wie kann ich das lösen?

Hier ist meine Tabellen:

Tabelle: clinicas - Clomuns: id, autenticacao_email, autenticacao_id, cli_pag_id, DESCRIÇÃO, foto, nome, qrcode, Standort, ativo, erstellt, geändert

Tabelle: telefones_clinicas - Clomuns: id, tdc_dli_id, telefone, erstellt, geändert

Tabelle: planos - Clomuns: id, plano

Tabelle: planos_clinicas - Clomuns: clinicas_id, planos_id

ich in dieser Datenbank mehrere Tabellen, aber ich don‘ Ich denke, sie sind das Problem.

In diesem Link die duplizierten Renditen sehen konnte: http://oakz.org/clinicas/clinicas/teste

ich nur zwei 'clinicas' haben. Die 'Clinicas' von ID 27 haben zwei 'Telefone' und vier 'Planos'. Die 'Clinicas' von ID 28 haben ein 'Telefon' und zwei 'Planos'.

Sie wiederholen jedes Ergebnis von Planos zwei Mal, denke ich.

public function teste(){ 


    $this->db->trans_start(); 

    $this->db->select('clinicas.id AS id_clinica, nome, site, especialidade, descricao, foto, ativo, clinicas.created AS criacao_clinica, qrcode, cep, logradouro, complemento, numero, bairro, cidade, uf, telefone, planos.plano AS plano'); 
    $this->db->from('clinicas'); 
    $this->db->join('endereco_clinica', 'clinicas.id = endereco_clinica.ecs_cli_id'); 
    $this->db->join('Especialidades_clinicas', 'clinicas.id = Especialidades_clinicas.edc_cli_id'); 
    $this->db->join('especialidades', 'Especialidades_clinicas.edc_esp_id = especialidades.id'); 
    $this->db->join('planos_clinicas', 'clinicas.id = planos_clinicas.clinicas_id'); 
    $this->db->join('telefones_clinicas', 'clinicas.id = telefones_clinicas.tdc_cli_id'); 
    $this->db->join('planos', 'planos.id = planos_clinicas.planos_id'); 
    $this->db->order_by('id_clinica', 'ASC'); 
    $clinicas = $this->db->get(); 


      $xyz = 0; 

      foreach($clinicas->result() as $row){ 
       $id_clinica = $row->id_clinica; 
       $nome = $row->nome; 
       $site = $row->site; 
       $especialidade =$row->especialidade; 
       $descricao = $row->descricao; 
       $foto = $row->foto; 
       $ativo = $row->ativo; 
       $criacao_clinica = $row->criacao_clinica; 
       $qrcode = $row->qrcode; 
       $cep = $row->cep; 
       $logradouro = $row->logradouro; 
       $complemento = $row->complemento; 
       $numero = $row->numero; 
       $bairro = $row->bairro; 
       $cidade = $row->cidade; 
       $uf = $row->uf; 
       $telefone = $row->telefone; 
       $plano = $row->plano; 
       $xyz++; 
       echo 'tô na rodada '.$xyz; 
       for($i = 0; $i <= count($plano); $i++) { 
        echo '<pre>',print_r($plano,1),'</pre>'; 
        echo '----------------------------------------<br>'; 
        echo '<pre>',print_r($row,1),'</pre>'; 
        echo '----------------------------------------<br>'; 
       } 
      } 


    $this->db->trans_complete(); 

} 

Antwort

0

Sie können versuchen, GROUP BY mit

$this->db->group_by('clinicas.id'); 
+0

Tryed und die Rückkehr nur über die 'plan' 'Amil' ([plan] => Amil) wiederholt –

Verwandte Themen