[Codeigniter-users] join時に同一名称のカラムがある場合の処置

Back to archive index

クロスキューブ佐々木 tao****@xross*****
2012年 2月 21日 (火) 15:58:33 JST


$this->db->select("DEFAULT_KEYWORD_RANK.RANK");
の様にselectで明示的にカラムを指定したらどうでしょうか?

--
■::
□■::-----------------------------------------------
■::
XROSS CUBE

 佐々木 多生
 Tao Sasaki

 tel:090-6158-4469
 fax:042-315-6607
 mail:tao****@xross*****

・EC-CUBEカスタマイズ
http://www.xross-cube.com/

・直感的なCMS、concrete5
 http://concrete5.xross-cube.com/
--------------------------------------------------■□



2012年2月21日12:59 Akihiko Noda <noda****@cariy*****>:
> Nodaと申します。
> お世話になっております。
>
> 現在、CodeIgniterを使って、システム専用のCMSを制作しています。
>
> 今、CONTENTテーブルとDEFAULT_KEYWORD_RANKテーブルの2つのテーブルがあります。
>
> DEFAULT_KEYWORD_RANKテーブルには、たとえば”hot”というキーワードに関するランキングを設定できるようにしています。
> CONTENTテーブルはベースとなるテーブルで、コンテンツのTITLE、ARTIST、TYPEなどのデータが設定してあります。
> 両テーブルは、CID(コンテンツID)というシステム一意の番号で結び付けています。
>
> なので、DEFAULT_KEYWORD_RANKテーブルを引くときに、CONTENTテーブルをjoinして、TITLE、ARTISTなど を合わせて読むようにします。
>
> この時、両テーブルの全カラムのデータを読もうと思ったのですが、うまく行きませんでした。(Internal Server Error)
> 原因は、両テーブルに同一名称のカラム(RANK)があるからでした。
>
> $this->db->from('DEFAULT_KEYWORD_RANK');
> $this->db->join('CONTENT', 'DEFAULT_KEYWORD_RANK.CONTENT_SID=CONTENT.SID');
> $this->db->where('DEFAULT_KEYWORD_RANK.DEFAULT_KEYWORD_SID =', '3303');
> $this->db->order_by($sidx, $sord);
> $this->db->limit($limit, $start);
> $query = $this->db->get();
>
> エラーメッセージは以下です。
>
> DEBUG - 2012-02-21 10:52:41 --> DB Transaction Failure
> ERROR - 2012-02-21 10:52:41 --> Query error: Column 'RANK' in order clause is ambiguous
>
> 実際にやりたいことは以下のコマンドのようなことで、これは成功します。
>
> select * from DEFAULT_KEYWORD_RANK join CONTENT on DEFAULT_KEYWORD_RANK.CONTENT_SID=CONTENT.SID where DEFAULT_KEYWORD_RANK.DEFAULT_KEYWORD_SID=3303;
>
> resultに同じ名前のフィールドを作ろうとしてしまうからでしょうか?
>
> 今のところ、必要なカラムの名前を重ならないように指定して読むようにしています。
> ですが、実際には、resultにテーブル名のprefixをつけるなどして識別できなければならないように思います。
> そうする方法は現時点でありますでしょうか?
> もしあれば教えていただきたく思います。
>
> 以上、よろしくお願いいたします。
>
> 以 上//
>
> _______________________________________________
> Codeigniter-users mailing list
> Codei****@lists*****
> http://lists.sourceforge.jp/mailman/listinfo/codeigniter-users
>
>




Codeigniter-users メーリングリストの案内
Back to archive index