在codeIgniter样式中查询

时间:2012-10-25 09:24:46

标签: codeigniter

我有以下查询:

SET @sql = NULL ;
SELECT GROUP_CONCAT( DISTINCT CONCAT(  'select latitude,longitude,max(serverTime) as serverTime,', deviceID,  ' AS device from  d', deviceID,  '_gps' ) 
SEPARATOR  '  UNION ALL  ' ) 
INTO @sql 
FROM devices
WHERE accountID =2;
PREPARE stmt FROM @sql ;
EXECUTE stmt;

有人可以帮我用codeIgniter样式编写上述查询....

另一件事是:以1和2格式编写查询有什么区别

1. $query = $this->db->query('YOUR QUERY HERE'); 



 2. $this->db->select("...");  
    $this->db->from(); 
    $this->db->where();

如果我们使用第二种风格,它会对性能有任何影响......谢谢

2 个答案:

答案 0 :(得分:0)

请检查documentation

我觉得你的问题对于ActiveRecord来说有点复杂,所以也许你应该用原始查询做一些部分(例如GROUP_CONCAT

表单1和表单2之间的区别:在第二种表单中,ActiveRecord将保护您的标识符。我认为ActiveRecord的主要优点是:你可以在语言上破坏你的查询。其他优点:函数调用可能更具可读性,大 - 大 - 大查询字符串可能有点不可读。

答案 1 :(得分:0)

试试这个:

$sql = "SELECT GROUP_CONCAT( DISTINCT CONCAT(  'select latitude,longitude,max(serverTime) as serverTime,', deviceID,  ' AS device from  d', deviceID,  '_gps' ) SEPARATOR  '  UNION ALL  ' ) 
INTO @sql FROM devices WHERE accountID =2;"

$this->db->set('@sql', 'NULL', FALSE);
$query = $this->db->prepare($sql);           

$query->execute();

两种格式的性能应该大致相同。我更喜欢第二种,因为它更具可读性和可维护性。