簡體   English   中英

在JOIN中重復的SQL結果-Codeigniter

[英]Repeated SQL result in JOIN - Codeigniter

我正在嘗試將“ clinicas”列表與您的“ telefones_clinicas”和“ planos_clinicas”一起返回。 我可以有多個“ telefones_clinicas”和“ planos_clinicas”,但這不是必需的。

但是,如果我有多個'telefones_clincias'或'planos_clinicas',我的sql結果將返回重復的結果。 我該如何解決?

這是我的桌子:

表:臨床- 克隆: ID,autenticacao_email,autenticacao_id,cli_pag_id,descricao,foto,nome,qrcode,site,ativo,創建,修改

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

表格: Planos- Clomuns: ID,Plano

表: planos_clinicas- 克隆門: clipartas_id,planos_id

我在此數據庫中有更多表,但我認為它們不是問題。

在此鏈接中,您可以看到重復的退貨: http : //oakz.org/clinicas/clinicas/teste

我只有兩個“診所”。 id為27的“診所”有兩個“ telefones”和四個“ planos”。 ID為28的“診所”有一個“電話”和兩個“平面”。

我認為他們重復了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();

}

您可以嘗試使用GROUP BY

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM