【问题标题】:Is it possible to rewrite this mySQL statement as a WHERE clause for redbean ORM?是否可以将此 mySQL 语句重写为 redbean ORM 的 WHERE 子句?
【发布时间】:2013-04-10 16:08:05
【问题描述】:

基于How can I merge these mysql statements我有以下工作sql语句:

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

我正在使用 redbean ORM http://redbeanphp.com/finding_beans ,它使用“bean”对象来表示行。我想使用一个名为 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 *”和“from table”由 R::findAll 处理。如果这是不可能的,我会用另一种方式来做。

提前致谢,

比尔

【问题讨论】:

    标签: php mysql redbean


    【解决方案1】:

    如果您单击您引用的“查找 Beans”页面上的 SQL Query 链接,您将在底部找到一个使用自定义查询检索 bean 的示例:

    $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 类型。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2010-12-07
      • 2021-07-17
      • 1970-01-01
      • 1970-01-01
      • 2012-08-03
      • 1970-01-01
      • 1970-01-01
      • 2015-01-31
      相关资源
      最近更新 更多