我有三张桌子
1.article(id,article_title)
2.article_status(ID,article_id的,stage_id)
3.article_stages(ID,stage_name)
每篇文章都在表2中有多个插入。我想使用连接查询获取指示当前阶段的最后一个值
制品
id article_title
1 article1
2 article2
article_status
id article_id stage_id
1 1 1
2 1 2
3 1 3
4 2 1
article_stages
id stage_name
1 Stage1
2 Stage2
3 Stage3
我需要像
这样的结果id article_title stage_name
1 article1 Stage3
2 article2 Stage1
这是我的查询
"SELECT `article`.`article_title` as id,`article`.`article_title`,`article_stages`.`stage_name`, MAX(`article_status`.`stage_id`) AS stage_id FROM (`article`)
JOIN `article_status` ON `article_status`.`article_id`=`article`.`id`
JOIN `article_stages` ON `article_stages`.`id` = (SELECT MAX(`stage_id`) FROM `article_status` )
GROUP BY `article_status`.`article_id`"
我试过这个
public function getAllArticleforIssue($condition = array())
{
$table1 = 'article';
$table2 = 'article_status';
$table3 ='article_stages';
$this->db->select($table1.'.id as id,'.$table1.'.article_title,'.$table3.'.stage_name');
$this->db->select_max($table2.'.stage_id');
$this->db->from('rsgp_article');
$this->db->join($table2,$table2.'.article_id='.$table1.'.id');
$this->db->join($table3 , $table3.'.id = '.$table2.'.stage_id');
if (count($condition) > 0)
$this->db->where($condition);
$this->db->group_by($table2.".article_id");
$query = $this->db->get();
return $query->result_array();
}
答案 0 :(得分:1)
查询说明:
SQL:
select article_id, article_title, stage_name
from ( select article_id , max(stage_id) as current_Stage_ID
from article_status
group by article_id ) groupedTable
join article on article.id = groupedTable.article_id
join article_stages on article_stages.id = groupedTable.current_Stage_ID
PHP:
function function_name() {
$sql = "select article_id, article_title, stage_name
from ( select article_id , max(stage_id) as current_Stage_ID
from article_status
group by article_id ) groupedTable join article on article.id = groupedTable.article_id
join article_stages on article_stages.id = groupedTable.current_Stage_ID";
$query = $this -> db -> query($sql);
$result = $query -> result_array();
return $result;
}
答案 1 :(得分:0)
使用此查询
SELECT a.article_title,s.stage_name
FROM article a
JOIN (
SELECT MAX(stage_id) max_id, article_id
FROM article_status
GROUP BY article_id
) b ON (b.article_id = a.article_id)
JOIN article_stages s ON (s.id = b.max_id)
答案 2 :(得分:0)
您可以使用此查询
SELECT a.id,a.artcle_title,s.stage_name
FROM article a
JOIN (
SELECT MAX(stage_id) max_id, article_id
FROM article_status
GROUP BY article_id
) b ON (b.article_id = a.id)
JOIN article_stages s ON (s.id = b.max_id)
使用ID栏......
修改后的答案 - @Roshan Dandgavhal
答案 3 :(得分:0)
尝试此查询
response(400)->json($data)