2016-07-19 5 views
-3

내가 몇 일이 (정말 간단한 생각) 일을 알아 내려고되었습니다SQL 쿼리

  1. alumnes :

    내가이 분야에 세 개의 테이블이를 ID , nomcognoms

  2. grups : id
  3. alumnesgrups : id, alumne_id (Alumnes.id와 관련됨) 및 grup_id (Grups.id와 관련됨).

    I 코드 AvadiariesController.php에서 나는 (선택 상자를 채우려하는 경우는 어떤이는 피벗 테이블 (테이블, 관계형 테이블을 조인 ...)

내 질문입니다 이 쿼리의 결과와 함께 add.ctp)에 :

SELECT 
alumnes.nomcognoms 

FROM 
alumnes_grups 

INNER JOIN grups ON 
alumnes_grups.grup_id = grups.id 

INNER JOIN alumnes ON 
alumnes_grups.alumne_id = alumnes.id 

WHERE 
alumnes_grups.grup_id = '16-17 2nB' 

ORDER BY 
alumnes.nomcognoms 

나는 다른 테이블에서 표시 필드를 가질 수 있습니까? 'id'대신 'name'을 어떻게 볼 수 있습니까?

$alumnesGrups = $this->Avadiaries->AlumnesGrups->Alumnes->find('list', 
    ['fields' => ['Alumnes.nomcognoms'], // keep the alias consistent with whatever you define in the join 
    'joins' => [['table' => 'alumnes', 
       'alias' => 'Alumnes', 
       'type' => 'INNER', 
       'conditions' => ['Alumnes.id' => 'AlumnesGrups.alumne_id']], 
     // mimic the above to join the other table 
       ['table' => 'grups', 
       'alias' => 'Grups', 
       'type' => 'INNER', 
       'conditions' => ['AlumnesGrups.grup_id' => '16-17 2nB'], 
       'order' => ['Alumnes.nomcognoms' => 'ASC']] 
       ] 
       ] 
    ); 

지금 add.ctp이 오류를 제공하지 않지만이 조건이 적용되지 않는 :

사용자 법안은 친절하게 (? 제대로) 내가 다시 썼다 뭔가를 제안

'conditions' => ['AlumnesGrups.grup_id' => '16-17 2nB'] 

이 출발점이 필요하기 때문에 다른 것들을 알아낼 수 있습니다.

답변

0

내가 마지막으로이 document을 읽은 후 해결책을 발견했다.

$alumnesGrups = $this->Avadiaries->AlumnesGrups->find('all', [ 
'fields' => ['Alumnes.name'], 
'contain' =>['Alumnes', 'Grups'], 
'conditions' => ['Grups.id =' => 1] 
]); 

내 문제는 지금 내가 갖는 것입니다 { "Alumnes을": { "이름": "안젤라 스미스"}} 그냥 일반 없다 "안젤라 스미스". 계속 찾아 볼게.

0

시도 뭔가 같은 : 명확성을 위해

$this->AlumnesGrup->find('all', 
    array(
     'fields' => array(
      'Alumne.nomcognoms' // keep the alias consistent with whatever you define in the join 
     ), 
     'joins' => array(
      array(
       'table' => 'alumnes', 
       'alias' => 'Alumne', 
       'type' => 'INNER', 
       'conditions' => array(
        'Alumne.id = AlumnesGrup.alumne_id 
      ), 
      // mimic the above to join the other table 
     ), 
     'conditions' => array(
      'AlumnesGrup.grup_id' => '15-16 2nB' 
     ), 
     'order' => array(
      'Alumne.nomcognoms ASC' 
     ) 
    ) 
); 

,이 같은 뭔가 조금 쿼리를 수정 :

SELECT 
alumnes.nomcognoms 

FROM 
alumnes_grups 

INNER JOIN grups ON 
alumnes_grups.grup_id = grups.id 

INNER JOIN alumnes ON 
alumnes_grups.alumnes_id = alumnes.id 

WHERE 
alumnes_grups.grup_id = '15-16 2nB' 

ORDER BY 
alumnes.nomcognoms