簡體   English   中英

如果用戶存在於另一個表中,則獲取表的記錄

[英]Get records of table if user exists in another table

我在模型中使用此codeigniter活動記錄查詢來獲取用戶表中得分最高的前10個用戶。

$this->db->order_by('points', 'desc'); 
        $q=$this->db->get('user', 10);
        $data = $q->result_array();
        return $data;

這樣可以很好地工作,並返回得分最高的前10位用戶的信息。 points是我的user表格中的一列。

但是,我一直在嘗試獲取也存在於另一個表entries的前10個用戶。

在條目表中,當用戶輸入條目時,將存儲當前用戶的user_id。

我想讓那些迷惑不解的用戶獲得頂峰。 因此,我想更改上面的查詢以返回entries表中具有最多分數的10個用戶。

User Table:

id, name, points

Entries Table:

id, time_entered, image, user_id

我該怎么做呢?

我嘗試了一個連接,它只返回了得分最高的單個用戶。

希望您的條目表將user_id作為外鍵。

因此,您的代碼應為:

$this->db->select("user.*,entries.*");
$this->db->from("user");
$this->db->join("entries","user.id = entries.user_id");
$this->db->order_by('user.points', 'desc'); 
$this->db->limit(10);   
$q = $this->db->get();    
$data = $q->result_array();
return $data;

我不熟悉CI,但是我會嘗試提供MySQL查詢,

SELECT * from user AS u 
    WHERE u.id IN (
        SELECT e.user_id from entries AS e
    )
    ORDER BY points DESC LIMIT 10

只需將其轉換為CI AR查詢即可。 我認為CI有一些方法可以設置AR查詢的condition 如果有該選項,則只需將條件設置為IN即可確定u.id存在於您的條目表中。

暫無
暫無

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

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