我想在 Codeigniter 查询生成器语言中使用JOIN
的兼容版本。
我的代码工作正常,但我想学习如何做。
$query = $this->db->query("
SELECT DISTINCT
pics_tag.* , pics.*
FROM pics_tag INNER JOIN pics
ON pics_tag.pics_id = pics.id
JOIN tag
ON pics_tag.tag_id = $tag_id
");
答案 0 :(得分:1)
$this->db->select("pics_tag.*, pics.*");
$this->db->from("pics_tag");
$this->db->join("pics","pics_tag.pics_id=pics.id");
$this->db->join("tag","pics_tag.tag_id=$tag_id");
阅读Codeigniter文档以获取正确的连接查询
答案 1 :(得分:0)
或者你可以制作模型,只需要在模型函数中给出的字段。
function GetJoinRecordNew($table, $field_first, $tablejointo, $field_second, $field, $value, $field_val) {
$this->db->select("$field_val");
$this->db->from("$table");
$this->db->join("$tablejointo", "$tablejointo.$field_second = $table.$field_first");
$this->db->where("$table.$field", "$value");
$this->db->group_by("$table.$field");
$q = $this->db->get();
if ($q->num_rows() > 0) {
foreach ($q->result() as $rows) {
$data[] = $rows;
}
$q->free_result();
return $data;
}
}
现在你只能传递参数,不需要为join添加不同的函数。这是最好的方式。
答案 2 :(得分:0)
我建议group_by
然后使用Distinct。
您需要添加group_by
。
$query = $this->db
->select('pt.* , p.*')
->select('$subquery')
->from('pics_tag as pt')
->join('pics as p', 'pt.pics_id = p.id', 'left')
->join('tag as t', 'pt.tag_id = '.$tag_id.'', 'left')
//->group_by('column_name'); // add group by add your colun name and remove comment
->get();