[英]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.