【问题标题】:Codeigniter order by who has max value in POINTS columnCodeigniter 按 POINTS 列中的最大值排序
【发布时间】:2018-10-21 19:10:03
【问题描述】:

我的公司表列“REV”包含所有评级总和,我想根据评级排序

public function all_company($limit, $offset)
{
$query = $this->db
->select(['id','name'])
->from('company')
->order_by('MAX(rev)', 'desc')
->get();
return $query->result();
}

公司表结构

ID | Name | Rev
1   name1   65
2   name2   15
3   name3   96

【问题讨论】:

  • 如果在 MySQL SELECT 语句中得到答案或者你需要在 PHP 中强制
  • 您在评级表上没有 PRIMARY KEY,这可能会在适当的时候证明有问题。

标签: php mysql sql codeigniter phpmyadmin


【解决方案1】:

你可以试试这个表结构并查询你的问题:

从公司中选择 *;

从 company_rating 中选择 *;

SELECT company.id, company.company_name, MAX(company_rating.rating)
FROM company
RIGHT JOIN company_rating ON company_rating.company_id = company.id
GROUP BY company.id
ORDER BY MAX(company_rating.rating) DESC

你可以试试 CI Active Query 吗:

$this->db->select('company.id, company.company_name, MAX(company_rating.rating)', false);
$this->db->from('company');
$this->db->join('company_rating c', 'company_rating.company_id = company.id', 'right');
$this->db->group_by('company.id'); 
$this->db->order_by('MAX(company_rating.rating)', 'desc');
$query = $this->db->get();
return $query->row();

并修改您的表结构,如

CREATE TABLE  `company` (
  `id` int(11) unsigned NOT NULL AUTO_INCREMENT,
  `company_name`varchar(30),
  PRIMARY KEY (`id`)
) DEFAULT CHARSET=utf8;


INSERT INTO `company` (`company_name`) VALUES
('ABC'),
('XYZ');

CREATE TABLE  `company_rating` (
  `id` int(11) unsigned NOT NULL AUTO_INCREMENT,
  `company_id` int(11),
  `rating` int(11),
  PRIMARY KEY (`id`)
) DEFAULT CHARSET=utf8;

INSERT INTO `company_rating` (`company_id`,`rating`) VALUES
(1,2),
(1,4),
(1,5),
(2,4),
(2,7),
(2,10);

也可以访问http://sqlfiddle.com

输出喜欢:

id  company_name    rating 

1   ABC              5 

2   XYZ              10

希望对你有帮助

【讨论】:

  • 请注意,没有人使用 RIGHT JOIN。事实上,它在这里的使用显然很奇怪。
  • 感谢 Nikunj,但我想按最高评级将我的公司列为订单,您的输出首先显示低评级
  • @NikuNjRathod codeigniter 在按代码语法错误排序时显示此错误,意外的“MAX”(T_STRING)。
  • @NikuNjRathod 请求我可以让您的linkedin个人资料立即聊天,因为我的问题没有解决兄弟 plz
  • @Ashraf 请立即查看。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2013-05-04
  • 1970-01-01
  • 1970-01-01
  • 2015-06-18
  • 1970-01-01
  • 2015-03-05
  • 2018-05-15
相关资源
最近更新 更多