Risposte:
db_update()
non implementa alcuna interfaccia che abbia join()
/ innerJoin()
/ etc. metodi quindi penso che tu sia bloccato con l'utilizzo db_query()
e la scrittura manuale della stringa di query.
$sql = "
UPDATE field_data_field_TEST as ft
left join node as n on ft.entity_id = n.nid
set n.type = :type1
where n.type = :type2";
$args = array(':type1' => 'test', ':type2' => 'foo');
db_query($sql, $args);
db_query()
. Se si desidera attenersi rigidamente alla documentazione, sicuramente, una condizione con una sottoquery sarebbe un'opzione. Ma come dici tu, sarebbe meno performante e per me non è affatto "meglio" che usare una query sql diretta
Update
non implementa alcuna join
funzione, è comunque necessario utilizzare la query generica per questo caso.