ZendFW ile bir sql sorgusu oluşturmaya çalışıyorum, ancak istediğim gibi işlev göremiyorum (veya hiç çalışmıyor). Bu benimZend_Db alt sorgu
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
Ne çözemiyorum düzgün orada o alt sorgu nasıl olduğunu) (seçmek Zend_Db ile inşa etmeye çalışıyorum ve ben denemek işe yaramış görünmüyor o çalıştığını sorgusu olur.
Herhangi bir yardım çok takdir edilecektir!
Teşekkürler!
Düzenleme/Cevap: aşağıdaki şekilde sorgu tarafından işlenmiş yeniden aşağıya hiç kimse öneri göre benzer bir sorun, olacaksa:
ZendFW kullanarak bu şekilde oluşturulanSELECT `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
:
$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');
Geri bildiriminiz için teşekkürler ve MySQL kullanıyorum, ancak maalesef aradığım sonucu üretmiyor. Her td.ID'nin ilişkili bir ti.destination_id değerine sahip olmadığını ve bunun bir alt sorgu kullanmanın neden daha iyi olduğunu düşündüğümü belirtmeliyim. Herhangi bir fikir? – user387302
Çok teşekkür ederim! Alt sorguda hala doğru sorguyu oluşturuyormuş gibi görünen ama Zend_Db_Select (Zend_Db_Expr kullanmayı denediğimde bile) tarafından sınırlandırılmış yanlışlık var. Ben de bundan vazgeçtim. Ancak önerileriniz sayesinde, alt sorgu gereksinimini ortadan kaldırmak için sorgumu bir leftjoin/groupby kullanmaya yönelttim. Çok teşekkür ederim! Hala uygulama mantığına bağlı olan sorgunun başka bölümleri var, bu yüzden başlamak için zend_db_select kullanmak istedim nedeni budur. – user387302
bu benim için mükemmel çalıştı. Burada "' dizi ("trip_title", "($ subquery)")) 'diziyi ekledim (" trip_title "," (subquery) olarak alt subery) ")) böylece hasta sadece sonucu görüyor – Patrioticcow