Foros del Web » Programando para Internet » PHP » Zend »

Sentencia SELECT con DISTINC mediante Zend_Db_Table

Estas en el tema de Sentencia SELECT con DISTINC mediante Zend_Db_Table en el foro de Zend en Foros del Web. Buenas a todos y gracias por vuestro tiempo. Estoy intentando devolver una consulta de selección sencilla desde Model_DbTable_Mitabla (models/Mitabla.php) Código PHP: class  Model_DbTable_MiTabla  extends  Zend_Db_Table_Abstract ...
  #1 (permalink)  
Antiguo 16/04/2010, 06:11
 
Fecha de Ingreso: diciembre-2009
Mensajes: 12
Antigüedad: 14 años, 11 meses
Puntos: 0
Sentencia SELECT con DISTINC mediante Zend_Db_Table

Buenas a todos y gracias por vuestro tiempo. Estoy intentando devolver una consulta de selección sencilla desde Model_DbTable_Mitabla (models/Mitabla.php)

Código PHP:
class Model_DbTable_MiTabla extends Zend_Db_Table_Abstract
{
    protected      
$_name 'MiTabla';
    
      
//protected             $_primary = 'idTabla';

    
public function getFilaSinRepeticion()
    {
        
$select $this->select()
                       ->
distinct();

        return 
$this->fetchAll($select);
        
    } 
y el problema es que ->distinct() aparentemente no tiene ningún efecto sobre la consulta pues me devuelve todos los registros de la tabla (repetidos). Soy novato y seguro que algo estoy implementando mal, pero por más que busco no veo nada claro. Para terminar, seguro que es una chorrada pero no la encuentro por ningún lado, He visto en el manual que por defecto Zend_Db_Table coge como clave primaria el campo 'id' si no le indicamos nada. Para indicarle un nombre diferente a 'id' lo podemos declarar en la clase como protected $_primary = 'nombreclave' pero, y de ahi surge mi duda, ¿Cuando tenemos varias claves primarias en una tabla?, ¿Como lo indicamos?. Disculpad por el ladrillo y gracias por vuestro tiempo. Un Saludo.


M.
  #2 (permalink)  
Antiguo 16/04/2010, 07:24
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 18 años, 5 meses
Puntos: 2135
Respuesta: Sentencia SELECT con DISTINC mediante Zend_Db_Table

Para especificar varias claves lo puedes hacer como un array: protected $_primary = array('clave1', 'clave2', 'clave3');

Para ver tu query imprimela usando: echo (string) $select; para que veas como se esta armando.

Saludos.
  #3 (permalink)  
Antiguo 16/04/2010, 08:42
 
Fecha de Ingreso: diciembre-2009
Mensajes: 12
Antigüedad: 14 años, 11 meses
Puntos: 0
Respuesta: Sentencia SELECT con DISTINC mediante Zend_Db_Table

Gracias GatorV. La sentencia se está armando de la siguiente manera

Cita:
SELECT DISTINCT `Mastil`.* FROM `Mastil`
Parece que el metodo ->select() por defecto obtiene todos los campos de la tabla, al no proyectar un campo en concreto, ->distinct() es del todo ineficaz. Buscando he encontrado esta solución.

Cita:
$select = $this->select()
->distinct()
->from($this->_name,'campo1')
;
No se si será la más acertada, yo pensaba que la proyección de los campos se haria en el método ->select(), algo como ->select('Tabla.campo'), pero ni en la ayuda ni en la guia indican nada por el estilo, al menos funciona . Una vez más gracias GatorV por ponerme en la pista.

Un saludo.

M.

Última edición por mash77; 16/04/2010 a las 08:49

Etiquetas: select, sentencia
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 03:15.