1

我有以下查询:

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();

如果我们使用 2nd 样式,它会对性能有什么影响吗...谢谢

4

2 回答 2

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();

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

于 2012-10-25T11:02:09.230 回答
0

请检查文档

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

形式 1. 和 2. 之间的区别:在第二种形式中,ActiveRecord 将保护您的标识符。我认为 ActiveRecord 的主要优点是:您可以动态地内爆您的查询。其他优点:函数调用可能更具可读性,大查询字符串可能有点不可读。

于 2012-10-25T10:55:02.980 回答