2013-04-10 60 views
-1

基于How can I merge these mysql statements我有以下工作SQL语句:是否有可能将这个mySQL语句重写为redbean ORM的WHERE子句?

SELECT *, max(DUP_NUMBER) as dup FROM table1 where CONTACTS=1 GROUP BY FIELD_A ORDER BY date LIMIT 3 

我现在用的红豆ORM http://redbeanphp.com/finding_beans,它使用“豆”对象来表示行。我想用所谓的findAll具体方法,要求连结的本SQL查询开始WHERE关键字

$all = R::findAll('needle',' where $sql '); 

这似乎不大可能,但我想我会问,鉴于此约束反正有重写整个查询以上转换为WHERE SQL子句。类似于:

" WHERE max(DUP_NUMBER) as dup where CONTACTS=1 GROUP BY FIELD_A ORDER BY date LIMIT 3 " 

“SELECT *”和“来自表”由R :: findAll负责。如果这是不可能的,我会简单地用另一种方式来做。

由于提前,

比尔

回答

1

如果你点击你所引用的“寻找豆”页面上的SQL Query链接,你会发现在底部检索与自定义查询豆的例子:

$sql = 'SELECT author.* FROM author 
     JOIN club WHERE club.id = 7 '; 
    $rows = R::getAll($sql); 
    $authors = R::convertToBeans('author',$rows); 

所以对于你的情况,它可能看起来像:

$rows = R::getAll('SELECT *, max(DUP_NUMBER) as dup FROM table1 where CONTACTS=1 GROUP BY FIELD_A ORDER BY date LIMIT 3'); 
$all = R::convertToBeans('needle', $rows); 

假设'needle'是您的bean类型。

+0

谢谢,这有助于 – user61629 2013-04-10 17:02:00