I am trying to retrieve information from two database tables in the same DB query using the following code:
$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();
The output I get does not resemble the database data but looks more like the database meta data, as follows:
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 (
), ......
What am I doing wrong?
Add the condition
to the join statement. Like on table1.id = table2.id
, then add $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();
Hope this helps... Muhammad.