如果你想使用其它数据库表中的结果来填充当前的数据库表,你可以使用SELECT语句将其取出,然后在PHP中对其进行迭代并将其保存到新表中去,另外你还可以使用INSERT INTO...SELECT FROM查询,在这里从SELECT查询返回的每条记录都会送入到INSERT查询中。
在这个例子中,我们想构建一个表"mytable",它包含两个字段节点ID和用户名,我们从数据库中取出所有page类型节点的对应信息,然后插入到表"mytable"中。
Drupal 6
<?php
db_query('INSERT INTO {mytable} (nid, name) SELECT n.nid, u.name FROM {node} n LEFT JOIN {users} u on n.uid = u.uid WHERE n.type = "%s"', array ('page'));
?>
Drupal 7
<?php
//构建选择查询
$query = db_select('node', 'n');
//关联users表
$query->join('users', 'u', 'n.uid = u.uid');
//添加我们想要的字段
$query->addField('n','nid');
$query->addField('u','name');
//添加一个条件,把节点限制在类型page上去。
$query->condition('type', 'page');
//执行插入
db_insert('mytable')
->from($query)
->execute();
?>