2013-04-10 5 views
-1

на основе How can I merge these mysql statements У меня есть следующее рабочее заявление SQL:Можно ли переписать этот оператор mySQL в качестве предложения WHERE для ORM Redbean?

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

Я использую redbean ОРМА http://redbeanphp.com/finding_beans, который использует объекты «боб» для представления строк. Я хотел бы использовать конкретный метод, называемый FindAll, который требует, чтобы assosciated запрос 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' - ваш тип боба.

+0

Спасибо, что помогает – user61629