it-swarm-ko.tech

왼쪽 조인 쿼리는 어떻게 작성합니까?

노드 ID를 알고있는 "vid"값을 얻고 "vid"가 2 인 행에 대해 "name"값을 가져오고 싶습니다.

그것이 평범한 질문이라면, 나는 그것을 쓰는 방법을 모른다. 왼쪽 조인 쿼리를 작성하는 방법을 모르겠습니다.

Drupal의 "일반"SQL 쿼리는 다음과 같습니다.

$result = db_query('SELECT tid FROM {taxonomy_index} WHERE nid = :nid', array(':nid'=>$nid));

동등한 원시 SQL 쿼리는 다음과 같습니다.

SELECT did, name FROM taxonomy_index as ti LEFT JOIN taxonomy_term_data AS ttd ON ti.tid = ttd.tid WHERE vid = 2 and nid = $nid
7
enjoylife

이와 같은 정적 쿼리에는 db_select ()를 사용할 필요가 없습니다. 실제로 db_select가 db_query보다 훨씬 느리다는 것을 알면 왜 사용하고 싶습니까? 를 참조해서는 안됩니다.

이를 자리 표시자를 추가하는 방법만으로 db_query ()로 전달하면됩니다.

$result = db_query('select tid,name from {taxonomy_index} as ti left join {taxonomy_term_data} as ttd on ti.tid=ttd.tid where vid=2 and nid=:nid', array(':nid' => $nid));
foreach ($result as $term) {
  // $term contains the object for the taxonomy term.
}

자세한 내용은 http://drupal.org/developing/api/database 를 참조하고 내 블로그 게시물 일반 Drupal 6 ~ 7을 참조하십시오. 데이터베이스 구문 변환 정보.

11
Berdir
$terms = db_select('taxonomy_index', 'ti')
  ->fields('ti', array('tid', 'name'));
$terms->leftJoin('taxonomy_term_data', 'ttd', 'ti.tid = ttd.tid');
$terms->condition('vid', 2)
  ->condition('nid', $nid)
  ->execute();

while ($term = $terms->fetch()) {
  // $term contains the object for the taxonomy term.
}
25
Sivaji
        $catalog_pagination = db_select('taxonomy_index', 'ti')
          ->fields('pimg',array('uc_product_image_target_id','entity_id'))
          ->fields('fm',array('fid','filename'))    
          ->fields('ti', array('nid', 'tid'));
        $catalog_pagination->leftJoin('node__uc_product_image', 'pimg', 'pimg.entity_id = ti.nid'); 
        $catalog_pagination->leftJoin('file_managed', 'fm', 'fm.fid = pimg.uc_product_image_target_id');  
        $catalog_pagination->condition('ti.tid', $term_id);
        $catalog_pagination->orderBy('ti.nid', 'DESC');
        $catalog_pagination = $catalog_pagination->execute();
        $total_pages = $catalog_pagination->fetchAll();
0
gurcharan