我一直在尝试使用 ZendFW 构建一个 sql 查询,但我似乎无法让它像我想要的那样运行(或根本无法运行)。这是我正在尝试使用 zend_db select() 构建的查询
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
我想不通的是如何正确地将子查询放在那里,而我尝试的任何方法似乎都不起作用。
任何帮助将不胜感激!
谢谢!
编辑/回答:如果有人遇到类似的问题,根据下面的建议,我通过以下方式通过查询重新工作:
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
我使用 ZendFW 以这种方式创建了它:
$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');