我正在尝试在codeigniter中执行联合。我在其他地方找到了这个代码框架:
$this->db->select('title, content, date');
$this->db->from('mytable');
$query = $this->db->get();
$subQuery1 = $this->db->_compile_select();
$this->db->_reset_select();
// #2 SubQueries no.2 -------------------------------------------
$this->db->select('title, content, date');
$this->db->from('mytable2');
$query = $this->db->get();
$subQuery2 = $this->db->_compile_select();
$this->db->_reset_select();
// #3 Union with Simple Manual Queries --------------------------
$this->db->query("select * from ($subQuery1 UNION $subQuery2) as unionTable");
// #3 (alternative) Union with another Active Record ------------
$this->db->from("($subQuery1 UNION $subQuery2)");
$this->db->get();
令我困惑的是你在原始子查询中有一个get_where子句,你如何包含它?像这样:
查询1
$this->db->select('Id,title, content, date');
$this->db->from('mytable');
$query = $this->db->get_where('Boo', array('Id' => $foo['foo_Id']);
$subQuery1 = $this->db->_compile_select();
查询2
$this->db->select('title, content, date');
$this->db->from('mytable2');
$query = $this->db->get_where('Boo', array('Title' => $foo['foo_Title'])
$subQuery2 = $this->db->_compile_select();
谢谢。
答案 0 :(得分:1)
您可以将它们全部写在一起。你不必这样做。我在这里写一个例子:
$q = '
SELECT userid
FROM users
WHERE userid=10
UNION
SELECT userid
FROM users
WHERE userid=5
';
$result = $this->db->query($q);
return $result;
答案 1 :(得分:0)
如果没有详细记录,您发现的示例将非常难以理解;我会提醒你不要这样做。
您的其他选择包括:
我建议对其进行硬编码,除非你正在节省切换数据库引擎的可能性,正如评论者提到的那样。