在Drupal 7结构化查询中使用AS语法

时间:2013-11-04 20:00:25

标签: mysql sql drupal drupal-7

我正在将脚本转移到Drupal 7并在查询中有一个变量字段名称。从一些研究来看,执行查询的唯一方法是通过结构化查询。这基本上就是我想要的:

db_query("SELECT '$variable_field_name1', '$variable_field_name2',
POW((lat - :lat), 2) + POW((:lng - lng), 2) AS distance
FROM table ORDER BY distance
LIMIT 1", array(':lat' => $lat, ':lng' => $lng));

这是我遇到的问题(无法在AS语句中找到文档):

$query = db_select('table', 't');
$query->fields('t', array("$variable_field_name1", "POW((lat - $lat), 2) 
                                    + POW(($lng - lng), 2) AS distance"));
$query->orderBy('distance', 'ASC');
$query->range(0, 1);
$result = $query->execute();

1 个答案:

答案 0 :(得分:0)

只需使用addExpression()来设置那种查询。

$query = db_select('table', 't');
$query->fields('t', array($variable_field_name1, $variable_field_name2));
$query->addExpression(
  'POW((lat - :lat), 2) + POW((:lng - lng), 2)',
  'distance',
  array(':lat' => $lat, ':lng' => $lng)
);
$query->orderBy('distance', 'ASC');
$query->range(0, 1);
$result = $query->execute();

可以在https://drupal.org/node/1848358找到有关addExpression()的文档。