Zend_Db_Seleccione orden por aleatorio, compatible en mssql / mysql

Bien, aquí está la situación, tengo una aplicación escrita en Zend_Framework, que es compatible con MySQL y MSSQL como backend. Ahora, ZF es bastante bueno resolviendo muchas de las discrepancias / diferencias de SQL entre los dos idiomas, pero todavía tengo que resolver este.

El objetivo es seleccionar 1 registro aleatorio de la tabla, que es una declaración extremadamente simple.

Aquí hay una declaración de selección, por ejemplo:

$sql = $db->select()
      ->from("table")
      ->order("rand()")
      ->limit(1);

Esto funciona perfectamente para las tablas de la base de datos MySQL, porque el sql para MySQL es el siguiente:

SELECT `table`.* FROM `table` ORDER BY rand() ASC

Ahora MSSQL por otro lado, usa elnewid () Función para hacer aleatorización.

¿Hay algún tipo de ayudante que pueda pasar a laorden() ¿Funciona para que se dé cuenta de que tiene que usar el orden correcto? Busqué en la documentación y en los foros, encontré algunos consejos, pero nada sólido.

Una de las cosas que encontré fue:

ORDEN POR ALEATORIO () no funciona - ZFForums.com

Están utilizando lo siguiente:

$res = $db->fetchAll(
'SELECT * FROM table ORDER BY :random',
array('random' => new Zend_Db_Expr('RANDOM()')
);

Funciona ... pero no busco compilar mi declaración de selección al escribirla y reemplazarla en la cadena. Intento mantenerla en el mismo objeto Zend_Db_Select. También he intentado pasar en elZend_Db_Expr('RANDOM()') en el->order() en la declaración, y falla. También publica una solución teórica para encontrar la respuesta, pero no estoy buscando reescribir la función en la que se encuentra, modificando la llamada $ db-> fetch ().

¿Algunas ideas?

Respuestas a la pregunta(2)

Su respuesta a la pregunta