So we make query to get node ID from particular product ID
$query = new EntityFieldQuery;
$query->entityCondition('entity_type', 'node', '=')
->propertyCondition('type', 'product_display')
->fieldCondition('field_product_reference', 'product_id', '1092', '=')
->range(0, 1);
If node is present, we do the array building
if ($result = $query->execute()) {
$nodeview = $result['node'];
// At first we need to get field's id. If you already know field id, you can ommit this step
// Get all fields attached to a given node type
$fields = field_info_instances('node', 'product_display');
// Put all field names you want to load
$field_names = array('title_field', 'body');
foreach ($field_names AS $field_name) {
// Get id of body field
$field_id = $fields[$field_name]['field_id'];
// Attach a field of selected id only to get value for it
field_attach_load('node', $nodeview, FIELD_LOAD_CURRENT, array('field_id' => $field_id));
}
// Get values of our node field, we use RESET to set the array pointer to first element of array
$output = field_get_items('node', reset($nodeview), 'title_field');
$output = field_get_items('node', reset($nodeview), 'body');
}
and some additional data why to use this over node_load
http://btmash.com/article/2012-04-13/i-just-want-one-field-using-fielda…