cakePHP에 두 개의 테이블이 있습니다. WHERE ID NOT IN두 개의 선택 쿼리를 중첩하는 CakePHP
사람하십시오 (competence_ratings FROM competence_id을 WHERE employee_id입니다 = $ userId를 선택)
SELECT * 역량 FROM :
competencies
------------
id
name
competenceRatings
-----------------
id
competence_id
user_id
rating
나는 케이크의 방법으로 다음과 같은 쿼리를 작성하는 방법이 필요합니다 도와주세요!!
것은 나는이 하위 쿼리 방법에 가기 전에 무슨 짓을 :
나는 competencies-> hasMany-> competenceRatings, competenceRatings-> belongsTo-> 역량의 관계를 시도했다.
$competencies = $this->Competence->CompetenceRating->find('all',array('CompetenceRating.user_id' => $userId,'CompetenceRating.competence_id !=' => 'Competence.id'));
사용자가 competenceRatings 테이블에 등급을 지정하지 않은 역량의 이름을 가져오고 싶습니다. 즉, comptenceRatings 테이블 (주어진 user_id에 대한)에 항목이없는 competencies 테이블의 이름 목록이 필요합니다. :
$subqueryOptions = array('fields' => array('competence_id'), 'conditions' => array('employee_id'=>$user_id));
$subquery = $this->Competence->CompetenceRating->subquery('all', $subqueryOptions);
$res = $this->Competence->CompetenceRating->find('all', array(
'conditions' => array('id NOT IN '. $subquery)
));
가 하위 쿼리의 소스가 여기에 있습니다 : 당신은 아마 하위 쿼리()를 사용 할 것
$options['joins'] = array(
array(
'table' => 'competence_ratings',
'alias' => 'CompetenceRating',
'type' => 'LEFT OUTER',
'conditions' => array(
'Competence.id = CompetenceRating.competence_id'
)
)
);
$options['conditions'] = array('CompetenceRating.employee_id' => $employee['Employee']['id']);
$competencies = $this->Competence->find('all',$options);
지금까지 시도한 것은 무엇입니까? – mark
실제 코드에 대해 이야기하고있었습니다. 예상 된 결과를 게시하는 대신 지금까지 코딩 한 내용을 게시해야합니다. 위의 질문을 편집하고 완료 할 수 있습니다. – mark
다시 한번 같은 질문을하십시오. 2 또는 3 시간이 걸립니다. "cakePHP 테이블 두 테이블 합류"질문이 있습니다. –