[英]Order by a SUM with multiple joins in codeigniter
解:
$query = $this->db->query("
SELECT *, SUM(views.times) AS sum
FROM channel
RIGHT JOIN video
ON channel.channel_id = video.channel_id
LEFT JOIN user
ON channel.user_id = user.user_id
LEFT JOIN views
ON channel.channel_id = views.channel_id
GROUP BY channel.channel_name
ORDER BY sum DESC
");
我有一個查詢,返回一個項目列表。
function getfrontpage(){
$this->db->select('*');
$this->db->from('channel');
$this->db->join('video', 'channel.channel_id = video.channel_id' , 'right');
$this->db->join('user', 'channel.user_id = user.user_id');
$this->db->group_by("channel.channel_name");
$query = $this->db->get();
return $query->result();
}
現在,我試圖從另一個表中使用SUM來訂購這些商品,我該如何實現呢?
這是該表的圖片:
我希望結果按照每個“ channel_id”的“時間”總數的總和排序
提前致謝
我建議改為通過$this->db->query()
運行它。
通過CodeIgniters AR函數獲取簡單值非常好。 但是在某些情況下,構建查詢字符串反而會更容易。
在您的情況下:
$query = $this->db->query("
SELECT channel_id, SUM(times) AS sum
FROM channel
GROUP BY channel_id
ORDER BY sum DESC
");
您還可以通過db-> query()轉義大多數值!
$this->db->query("
SELECT name
FROM table_name
WHERE id = ?
", array(1));
它不是像$this->db->order_by("channel_id", "desc");
一樣簡單嗎$this->db->order_by("channel_id", "desc");
? 這將按channel_id的降序對結果進行排序。
假設問題中顯示的表名為times_table,並且鍵為user_id,channel_id,則可以使用以下代碼將times_table聯接到查詢中,以便“ times”列可以進行排序。
$this->db->join("times_table", "times.user_id=channel.user_id, times.channel_id=channel.channel_id", "left");
// You've already grouped by channel_name, so grouping by channel_id is probably not necessary.
$this->db->order_by("SUM(times_table.times) DESC");
注意:我只是猜測您顯示的表的名稱為times_table。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.