0

現在、テーブルで呼び出さratingれた列があり、列内links以外の値が確実にあるが、各リンクに対して返される唯一の値であるという問題があります。その列に対して単純な get を実行すると、他のすべての値が表示されますが、SQL 結合を実行すると表示されません。00

問題はテーブルの結合であることはわかっていますが、これらの特定のテーブルを結合する方法がわかりません。

データベース テーブルの構造

列はrating私に問題を引き起こしているものです。

'links' id | title | url | user_id | list_id | rating | weight | date_created

'list' id | list_title | list_description | user_id | rating | views | date_created

'link_ratings' id | user_id | link_id | rated | date_created

モデル:

public function get_latest(){

    $this->db->limit(100);
    $this->db->order_by('links.date_created', 'DESC');
    $this->db->select('*');
    $this->db->select('links.id as current_link_id');
    $this->db->from('links');
    $this->db->join('list', 'links.list_id = list.id'); 
    $this->db->join('users', 'links.user_id = users.id');
    $this->db->join('link_ratings', 'links.id = link_ratings.link_id','left');      

    $get_latest = $this->db->get();

    return $get_latest;

}

どんな助けでも大歓迎です。

4

2 に答える 2

1

これを試してください:

function get_latest(){
    $this->db->select('list.*, users.*, links.id as current_link_id');
    $this->db->from('links');
    $this->db->join('list', 'links.list_id = list.id'); 
    $this->db->join('users', 'links.user_id = users.id');
    $this->db->join('link_ratings', 'links.id = link_ratings.link_id','left');      
    $this->db->order_by('links.date_created', 'DESC');
    $this->db->limit(100);
    $get_latest = $this->db->get()->result_array(); #fetch all rows here
    echo "<pre>";print_r( $get_latest );die; #print all rows and see if its fetching ratings corrctly or not.
    echo $this->db->last_query();die; #check the query generated
    return $get_latest;
}
于 2013-11-01T14:05:22.183 に答える