2013-06-18 2 views
0

У меня есть две таблицы, я хочу написать внутреннее соединение запроса в Зенд, чтобы извлечь все записи из таблицы 1, чей идентификатор не совпадает с таблицей 2 IDМодели в Zend Framework внутреннее соединение запроса

$db = Zend_Db_Table::getDefaultAdapter();  
$select = $db->select()->setIntegrityCheck(FALSE); 
$select->from('cwi_company','*')->join('cwi_groupinglinks','cwi_company.id <> cwi_groupinglinks.orgId')->where('cwi_company.manage=1')->where('cwi_company.deleteOption=0'); 
$result =$select->fetchAll();  
return $result; 

ответ

0

использования joinInner для внутренних соединений

$select->from('cwi_company','*')->joinInner('cwi_groupinglinks','cwi_company.id != cwi_groupinglinks.orgId')->where('cwi_company.manage=1')->where('cwi_company.deleteOption=0'); 
+1

соединения является псевдонимом для joinInner –

0

Если вам нужно выбрать записи, которые не существуют в правой таблице, вам нужно LEFT JOIN и выбрать, где значение == NULL, напр:

$db = Zend_Db_Table::getDefaultAdapter();  

$select = $db->select()->setIntegrityCheck(FALSE); 
$select->from('cwi_company','*') 
    ->joinLeft('cwi_groupinglinks','cwi_company.id = cwi_groupinglinks.orgId') 
    ->where('cwi_company.manage=1') 
    ->where('cwi_company.deleteOption=0'); 
    ->where('cwi_groupinglinks.orgId IS NULL') 

$result = $select->fetchAll(); 
0

Немного подправили версия @Aurimas Ličkus ответить

$db = Zend_Db_Table::getDefaultAdapter();  

$select = $db->select()->setIntegrityCheck(FALSE); 
$select->from('cwi_company',array('*')) 
    ->joinLeft('cwi_groupinglinks','cwi_company.id = cwi_groupinglinks.orgId',null) 
    ->where('cwi_company.manage = ?',1) 
    ->where('cwi_company.deleteOption = ?',0); 
    ->where('cwi_groupinglinks.orgId IS NULL') 

$result = $select->fetchAll(); 

return (!empty($result)) ? $result : null; 
Смежные вопросы