0

我正在尝试在 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();

谢谢你。

4

2 回答 2

1

您可以将它们全部写成一个。您不必遵循这种方式。这里我写一个例子:

$q = '
 SELECT userid 
 FROM users
 WHERE userid=10
 UNION
 SELECT userid
 FROM users
 WHERE userid=5
';
$result = $this->db->query($q);
return $result;
于 2012-04-05T13:54:17.703 回答
0

如果没有很好的文档记录,您找到的示例将很难遵循;我会警告你不要这样做。

您的其他选择包括:

  • 意见
  • 存储过程
  • 硬编码查询

我建议对其进行硬编码,除非您要节省切换数据库引擎的可能性,正如评论者所提到的那样。

请记住,始终使用手套

于 2012-04-06T02:38:09.157 回答