2012-07-18 85 views
4

我嘗試使用下面的代碼在同一個數據庫查詢兩個數據庫表中檢索信息:Drupal數據庫連接查詢

$query = db_select('webform_questionnaire_fieldset', 'wqf'); 
         $query->join('webform_component', 'wc', 'wqf.cid = wc.cid'); 
         $query->fields('wqf') 
         ->fields('wc') 
         ->condition('wqf.cid', $cid, '=') 
         ->condition('wqf.nid', $nid, '=') 
         ->condition('wqf.cid', 'wc.cid', '=') 
         ->execute() 
         ->fetchAll(); 

輸出我得到的並不像數據庫中的數據,但看起來更像數據庫元數據如下:

SelectQuery::__set_state(array(
    'fields' => 
    array (
), 
    'expressions' => 
    array (
), 
    'tables' => 
    array (
    'wqf' => 
    array (
     'join type' => NULL, 
     'table' => 'webform_questionnaire_fieldset', 
     'alias' => 'wqf', 
     'condition' => NULL, 
     'arguments' => 
     array (
    ), 
     'all_fields' => true, 
    ), 
    'wc' => 
    array (
     'join type' => 'INNER', 
     'table' => 'webform_component', 
     'alias' => 'wc', 
     'condition' => NULL, 
     'arguments' => 
     array (
    ), 
     'all_fields' => true, 
    ), 
), 
    'order' => 
    array (
), ...... 

任何人都可以告訴我我做錯了什麼?

回答

5

condition添加到聯接語句中。像on table1.id = table2.id,再加入$result = $query->execute()->fetchAll();

$query = db_select('webform_questionnaire_fieldset', 'wqf'); 
$query->join('webform_component', 'wc', 'wqf.cid = wc.cid'); 
$query->fields('wqf') 
    ->fields('wc') 
    ->condition('wqf.cid', $cid, '=') 
    ->condition('wqf.nid', $nid, '=') 
    ->condition('wqf.cid', 'wc.cid', '='); 
$result = $query->execute()->fetchAll(); 

希望這有助於...穆罕默德。

+1

謝謝穆罕默德,但它並沒有糾正你的反饋輸出 – sisko 2012-07-18 14:34:16

+1

Thx。我已經更新了答案。請重新檢查。 – 2012-07-18 14:38:18

+0

謝謝穆罕默德 – sisko 2012-07-18 15:00:21