it-swarm-vi.com

Làm thế nào để tôi viết một truy vấn tham gia trái?

Tôi muốn nhận giá trị của "vid" khi biết ID nút và nhận giá trị của "name" cho các hàng trong đó "vid" bằng 2.

Nếu đó là một truy vấn đơn giản, tôi sẽ không biết cách viết nó; Tôi không biết làm thế nào để viết một truy vấn tham gia trái.

Truy vấn SQL "đơn giản" trong Drupal là như sau:

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

Truy vấn SQL thô tương đương như sau:

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

Bạn không cần sử dụng db_select () cho truy vấn tĩnh như thế này. Thực tế, bạn không nên xem Vì db_select chậm hơn nhiều so với db_query, tại sao tôi lại muốn sử dụng nó? .

Bạn chỉ cần chuyển nó cho db_query (), điều duy nhất đã thay đổi là cách bạn thêm giữ chỗ.

$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.
}

Xem http://drupal.org/developing/api/database để biết thêm thông tin và bài đăng trên blog của tôi cho generic Drupal 6 đến 7 cơ sở dữ liệu thông tin chuyển đổi.

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