2016-10-09 78 views
0

我試圖用你的'telefones_clinicas'和'planos_clinicas'返回'clinicas'列表。我可以有多個'telefones_clinicas'和'planos_clinicas',但這不是必需的。在JOIN中重複的SQL結果 - Codeigniter

但是,如果我有多個'telefones_clincias'或'planos_clinicas'我的SQL結果是返回重複。我該如何解決這個問題?

這裏是我的表:

表: clinicas - Clomuns: ID,autenticacao_email,autenticacao_id,cli_pag_id,descricao,照片,諾姆,QR碼,網站,ativo,創建,修改

表: telefones_clinicas - Clomuns: ID,tdc_dli_id,telefone,創建,修改

表: planos - Clomuns: ID,平

表: planos_clinicas - Clomuns: clinicas_id,planos_id

我該數據庫中有多個表,但我不」我認爲他們是問題。

在這個環節,你可以看到複製的回報:http://oakz.org/clinicas/clinicas/teste

我只有兩個「clinicas」。 id 27的'臨牀'有兩個'telefones'和四個'planos'。 id 28的'臨牀'有一個'telefones'和兩個'planos'。

他們重複我認爲兩次planos的每個結果。

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(); 

} 

回答

0

您可以嘗試使用GROUP BY

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

Tryed和返回只擁有 '平' '阿米爾'([平] =>阿米爾)重複 –