Я пытаюсь построить sql-запрос с ZendFW, но я не могу заставить его функционировать, как я хочу (или вообще вообще). Это запрос, который работает, что я пытаюсь построить с Zend_Db выбрать()Подзапрос Zend_Db
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
То, что я не могу понять, как правильно получить, что подзапрос там, и ничего я стараюсь не похоже на работу.
Любая помощь была бы принята с благодарностью!
Спасибо!
Edit/Ответ: Если кто-то будет когда-либо иметь подобную проблему, основываясь на предположении, ниже я снова работал на запрос следующим образом:
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');
Спасибо за отзыв, и я использую MySQL, но, к сожалению, это не дает результат, который я ищу. Я должен упомянуть, что не каждый td.ID имеет связанный ti.destination_id, и я думаю, именно поэтому я лучше использую подзапрос. Есть идеи? – user387302
Большое спасибо! У меня все еще была проблема с подзапросом, поскольку он, казалось, генерировал правильный запрос, но Zend_Db_Select неправильно разделил (даже когда я попытался использовать Zend_Db_Expr). Поэтому я отказался от этого. Но, благодаря вашему предложению, я переработал свой запрос, чтобы использовать leftjoin/groupby, чтобы избежать необходимости в подзапросе. Большое спасибо! У меня все еще есть другие части запроса, которые зависят от логики приложения, поэтому я хотел использовать zend_db_select для начала. – user387302
это работало идеально для меня. здесь "' array ("trip_title", "($ subquery)")) 'i добавил' array ("trip_title", "($ subquery) в качестве подзапроса")) 'так, чтобы увидеть только результат – Patrioticcow