我的代码不使用此';加入';


My code do not run with this 'join'

我有一个名为"distinct"的空表。Thiw表有一些名称为"wid"、"variables"answers"timestamp"的列。。。我有以下代码:

// Begin building the query.
  $query = db_select('watchdog', 'wa');
  $query->join('distinct', 'd', 'wa.wid = d.wid');
  $query->fields('wa', array('variables', 'wid', 'timestamp', 'type', 'message',
    'severity'))
    ->range(0, 20);
  $result = $query->execute();
  // Loop through each item and add to $row.
  foreach ($result as $row) {
    $delete_old_rows = db_delete('distinct')
      ->condition('variables', $variables, '=')
      ->condition('timestamp', $timestamp, '<')
      ->execute();
    $select_same_variables = db_select('distinct', 'd')
      ->fields('d')
      ->condition('variables', $variables, '=')
      ->execute();
    if ($select_same_variables->rowCount() == 0) {
      $query = db_insert('distinct')
        ->fields(array('timestamp' => $timestamp, 'wid' => $wid,                                          
           'variables' => $variables,
    ))
    ->execute();
  }

当我在没有联接的情况下运行这段代码时,一切都很完美,但它只运行20个值。。当我用join运行它时,没有一次进入"for"循环。。。为什么我有这个问题?

Distinct,时间戳&键入所有听起来像是许多不同数据库中的保留字。即使数据库允许,也不要使用保留字来命名列(或表),这是一种很好的做法

由于循环只运行了20次,这可能是由于一些意外的数据(可能是时间戳的空值)直到第20次迭代才出现。