我有以下表 的Aliados(主表和一個我試圖從檢索記錄)。 aliados_direccion已aliados_id作爲一個外鍵 aliados_centro_medico其中也有aliados_id作爲外鍵,使可能於下表用Many_Many關係。 centro_medico。(解決)小與誼CDbCriteria問題加入
在aliados_direccion和centro_medico有一個名爲「parroquias_id」列其來自於對這個查詢沒有意義的不同的表。
我試圖讓網給我看一些「的Aliados」如果他們有一個aliados_direccion或與其相關的一個aliados_centro_medico其中aliados_direccion.parroquias_id或centro_medico.parroquias_id是依賴於用戶的數組已登錄。
數組是罰款和mysql讀取它沒有問題,問題是在實際查詢。
$criteria=new CDbCriteria;
$criteria->select='a.*';
$criteria->alias='a';
$criteria->join='RIGHT JOIN (SELECT dir.* FROM aliados_direccion dir
WHERE dir.parroquias_id IN ('.$zonas.')) ad ON ad.aliados_id=a.id';
$criteria->join='RIGHT JOIN (SELECT many.* FROM aliados_centro_medico many
INNER JOIN (SELECT centro_medico.id as idCM
FROM centro_medico
WHERE centro_medico.parroquias_id
IN ('.$zonas.')) cm
ON cm.idCM = many.centro_medico_id) acm
ON acm.mAlId = a.id';
$criteria->compare(blahblahblah);
//BTW $zonas is the array that I previously built
這裏發生的情況是,網格會顯示所有記錄或不顯示,這取決於我使用的是左連接還是右連接。 我嘗試使用關係的別名太像>
if($this->aliados_direccion){
//First Criteria Join
elseif($this->aliados_centro_medico){
//Second Criteria Join
}
但是當我做,它仍然會帶給我的所有記錄,即使我使用INNER JOIN代替。
謝謝你,但這樣做,它仍然不會做任何事情。當我這樣做時,發生的第一件事是它帶來了1行,並且構成了不在表格中的數據。 – arrigonfr
解決了它。當我回家後我會發布解決方案。 – arrigonfr