Select com JOIN no CodeIgniter

273 views
Skip to first unread message

Caio Mancini

unread,
Aug 28, 2009, 1:20:27 PM8/28/09
to php-b...@googlegroups.com
Olá pessoal.

Eu tenho uma query simples que funciona quando eu executo no terminal ou no SQLYog ou PHPMyAdmin, mas quando eu jogo no CodeIgniter dá erro até mandar parar...

A query é esta:

select a.idemp,a.fanemp,c.nomcat,b.telcon
            from empresa a,contato b,categorias c,categorias_da_empresa d,contato_empresa e
            where a.idemp=d.idemp
            and c.idcat=d.idcat
            and a.idemp=e.idemp
            and b.idcon=e.idcon
            order by a.fanemp

Já tentei fazer de várias maneiras lá no meu model. O primeiro jeito que tentei foi usar o $this->db->query e jogar a string inteira como parâmetro, só que isso dá erro, fala que não tem tabela selecionada. Agora estou tentando assim:

$this->db->select('empresa.idemp','empresa.fanemp','categorias.nomcat','contato.telcon');
$this->db->from('empresa');
$this->db->join('categorias_da_empresa','empresa.idemp=categorias_da_empresa.idemp');
$this->db->join('empresa','empresa.idemp=categorias_da_empresa.idemp');
$this->db->join('categorias','categorias.idcat=categorias_da_empresa.idcat');
$this->db->join('empresa','empresa.idemp=contato_empresa.idemp');
$this->db->join('contato','contato.idcon=contato_empresa.idcon');
$this->db->orderby('fanemp','desc');
$query=$this->db->get();

Só que eu não entendo muito bem essa sintaxe então dá o erro:

Error Number: 1066

Not unique table/alias: 'empresa'


Eu queria só um jeito simples de fazer uma query.


Se alguém puder ajudar já ficaria muito agradecido.


--

________________________
Caio M. S. Mancini
www.gxp.com.br

www.twitter.com/caiomancini
MSN: kaiou...@yahoo.com.br
ICQ: 177165688
AIM: caiomalkavianos
Skype: caiomalkavianos
________________________

JW

unread,
Aug 28, 2009, 1:23:30 PM8/28/09
to php-b...@googlegroups.com
caião,

o erro ta na cara caraleo.

coloca o alias no $this->db->from("table alias");

JW

2009/8/28 Caio Mancini <caio.manc...@gmail.com>



--
José Wilker (wilker)
Misgood Technologies
www.misgood.com
----------------------------------------------------------------
"Somos livres para escolher mas prisioneiro das consequencias".

Caio Mancini

unread,
Aug 28, 2009, 1:28:36 PM8/28/09
to php-b...@googlegroups.com
Não entendi Zé...

o negócio tá assim agora

        $this->db->select('empresa.idemp','empresa.fanemp','categorias.nomcat','contato.telcon');
        $this->db->from('empresa a','contato b','categorias c','categorias_da_empresa d','contato_empresa e');

        $this->db->join('categorias_da_empresa','empresa.idemp=categorias_da_empresa.idemp');
        $this->db->join('empresa','empresa.idemp=categorias_da_empresa.idemp');
        $this->db->join('categorias','categorias.idcat=categorias_da_empresa.idcat');
        $this->db->join('empresa','empresa.idemp=contato_empresa.idemp');
        $this->db->join('contato','contato.idcon=contato_empresa.idcon');
        $this->db->orderby('fanemp','desc');
       
        $query=$this->db->get();
       
        return $query->result();

Mas continua dando o erro....


2009/8/28 JW <uisk...@gmail.com>

JW

unread,
Aug 28, 2009, 1:31:29 PM8/28/09
to php-b...@googlegroups.com
faz uma consulta simples e vê se traz resultados do banco. se nao o pau ta antes da consulta. database.php é a chave.
se não depois agente troca ideia pra resolver q eu to meio ocupado agora.

abs,

Caio Mancini

unread,
Aug 28, 2009, 1:57:11 PM8/28/09
to php-b...@googlegroups.com
Agora eu fiz isso
$this->db->select('fanemp','nomcat');
        $this->db->from('empresa','categorias','categorias_da_empresa');

        $this->db->join('categorias_da_empresa','empresa.idemp=categorias_da_empresa.idemp');
        $this->db->join('categorias','categorias.idcat=categorias_da_empresa.idcat');
        $this->db->orderby('fanemp');

        $query=$this->db->get();
       
        return $query->result();

mais simplificada...
Ae deu o erro:

Severity: Notice

Message: Undefined property: stdClass::$nomcat

Filename: views/main.php

Line Number: 21


Na minha view está
<?php
            foreach ($query as $row){
                echo "<tr>";
                //echo "<td>".$row->idemp."</td>";
                echo "<td>".$row->fanemp."</td>";
                //echo "<td>".$row->telcon."</td>";
                echo "<td>".$row->nomcat."</td>";
                //echo "<td>".anchor('books/input/'.$row->id,'Edit')."</td>";
                //echo "<td>".anchor('books/del/'.$row->id,'Delete')."</td>";
                echo "</tr>";
            }
        ?>


2009/8/28 JW <uisk...@gmail.com>

Vinicius Rezende

unread,
Aug 28, 2009, 1:39:49 PM8/28/09
to php-b...@googlegroups.com
Porque você dá um select em empresa e depois dá join em empresa?

2009/8/28 JW <uisk...@gmail.com>

Arian Maykon (Dead_Thinker)

unread,
Aug 29, 2009, 8:08:27 AM8/29/09
to php-brasil
Não dá pra imprimir o select gerado pra saber se é o que queres?
Algo semelhante ao Zend_Db_Select::assemble() do Zend Framework! :D

--
_________________________________________________
Arian Maykon de Araújo Diógenes

Fortaleza - Ceará - Brasil
Linux User #: 467310
Blog: http://arianmaykon.blogspot.com/
Contatos: http://meadiciona.com/dead_thinker




On 28 ago, 14:39, Vinicius Rezende <crazylor...@gmail.com> wrote:
> Porque você dá um select em empresa e depois dá join em empresa?
>
> 2009/8/28 JW <uiski...@gmail.com>
>
> > faz uma consulta simples e vê se traz resultados do banco. se nao o pau ta
> > antes da consulta. database.php é a chave.
> > se não depois agente troca ideia pra resolver q eu to meio ocupado agora.
>
> > abs,
>
> > JW
>
> > 2009/8/28 Caio Mancini <caio.mancini.lis...@gmail.com>
>
> >> Não entendi Zé...
>
> >> o negócio tá assim agora
>
> >> $this->db->select('empresa.idemp','empresa.fanemp','categorias.nomcat','contato.telcon');
> >>         $this->db->from('empresa a','contato b','categorias
> >> c','categorias_da_empresa d','contato_empresa e');
>
> >> $this->db->join('categorias_da_empresa','empresa.idemp=categorias_da_empresa.idemp');
>
> >> $this->db->join('empresa','empresa.idemp=categorias_da_empresa.idemp');
>
> >> $this->db->join('categorias','categorias.idcat=categorias_da_empresa.idcat');
> >>         $this->db->join('empresa','empresa.idemp=contato_empresa.idemp');
> >>         $this->db->join('contato','contato.idcon=contato_empresa.idcon');
> >>         $this->db->orderby('fanemp','desc');
>
> >>         $query=$this->db->get();
>
> >>         return $query->result();
>
> >> Mas continua dando o erro....
>
> >> 2009/8/28 JW <uiski...@gmail.com>
>
> >>>  caião,
>
> >>> o erro ta na cara caraleo.
>
> >>> coloca o alias no $this->db->from("table alias");
>
> >>> JW
>
> >>> 2009/8/28 Caio Mancini <caio.mancini.lis...@gmail.com>
> >>>> MSN: kaiou200...@yahoo.com.br
> >>>> ICQ: 177165688
> >>>> AIM: caiomalkavianos
> >>>> Skype: caiomalkavianos
> >>>> ________________________
>
> >>> --
> >>> José Wilker (wilker)
> >>> Misgood Technologies
> >>>www.misgood.com
> >>> ----------------------------------------------------------------
> >>> "Somos livres para escolher mas prisioneiro das consequencias".
>
> >> --
>
> >> ________________________
> >> Caio M. S. Mancini
> >>www.gxp.com.br
>
> >>www.twitter.com/caiomancini
> >> MSN: kaiou200...@yahoo.com.br

Caio Mancini

unread,
Sep 1, 2009, 9:40:04 PM9/1/09
to php-b...@googlegroups.com
Então rapaz.. eu me confundo muito com a sintaxe do JOIN.. eu geralmente faço com alias que é pra mim é mais fácil.

Como seria a sintaxe disso arrumada?

2009/8/28 Vinicius Rezende <crazy...@gmail.com>
Reply all
Reply to author
Forward
0 new messages