He estado tratando de construir una consulta sql con ZendFW, pero parece que no puedo hacer que funcione como quiero (o que funcione). Esta es la consulta que obras que yo estoy tratando de construir con Zend_Db seleccione()Zend_Db subconsulta
SELECT tc.trip_title, td.ID, td.trip_id,
(SELECT count(*) FROM 'trips_invites' ti
WHERE ti.destination_id=td.ID AND ti.accepted ='NR') AS "pending_invites"
FROM `trips_current` AS `tc`, `trips_data` AS `td`
WHERE (tc.ID=td.trip_id) AND (tc.creator_id = '1')
ORDER BY `trip_id` ASC
Lo que no puedo entender es cómo conseguir que adecuadamente subconsulta allí, y nada que intento parece funcionar.
¡Cualquier ayuda sería muy apreciada!
Gracias!
Editar/Respuesta: Si alguien tendrá nunca un problema similar, basado en la sugerencia de abajo me re-trabajado por la consulta de la siguiente manera:
SELECT `tc`.`trip_title`, `td`.`ID`, `td`.`trip_id`, count(TI.ID)
FROM `trips_current` AS `tc`
INNER JOIN `trips_data` AS `td` ON td.trip_id = tc.ID
LEFT JOIN trips_invites AS TI ON ti.destination_id = td.id
WHERE tc.creator_id = 1 AND ti.accepted='NR'
GROUP BY td.id
ORDER BY `trip_id` ASC
el que el uso de ZendFW he creado de esta manera:
$select = $this->dblink->select()
->from(array('tc' => 'trips_current'),
array('trip_title'))
->join(array('td' => 'trips_data'),
'td.trip_id = tc.id',
array('ID','trip_id'))
->joinLeft(array('ti'=>'trips_invites'),
'ti.destination_id = td.id',
array('COUNT(ti.id)'))
->where('tc.creator_id =?',1)
->group('td.id')
->order('trip_id');
Gracias por sus comentarios, y estoy usando MySQL, pero desafortunadamente eso no produce el resultado que estoy buscando. Debo mencionar que no todos los td.ID tienen un ti.destination_id asociado, y creo que es por eso que es mejor utilizar una subconsulta. ¿Algunas ideas? – user387302
¡Muchas gracias! Todavía tenía un problema con la subconsulta, ya que parecía generar la consulta correcta, pero Zend_Db_Select delimitó erróneamente (incluso cuando traté de usar Zend_Db_Expr). Así que renuncié a eso. Pero gracias a su sugerencia, modifiqué mi consulta para usar un leftjoin/groupby para evitar la necesidad de la subconsulta. ¡Muchas gracias! Todavía tengo otras partes de la consulta que dependen de la lógica de la aplicación y es por eso que quería usar zend_db_select para empezar. – user387302
esto funcionó perfecto para mí. aquí "' array ("trip_title", "($ subquery)")) 'agregué' array ("trip_title", "($ subquery) como subconsulta")) 'para que vea el resultado solamente – Patrioticcow