Index: includes/query.inc
===================================================================
RCS file: /cvs/drupal-contrib/contributions/modules/views/includes/query.inc,v
retrieving revision 1.45
diff -u -p -r1.45 query.inc
--- includes/query.inc	2 Jun 2009 18:17:06 -0000	1.45
+++ includes/query.inc	5 Nov 2009 21:59:12 -0000
@@ -74,13 +74,13 @@ class views_query {
     $this->relationships[$base_table] = array(
       'link' => NULL,
       'table' => $base_table,
-      'alias' => $base_table,
+      'alias' => views_clean_alias($base_table),
       'base' => $base_table
     );
 
     // init the table queue with our primary table.
-    $this->table_queue[$base_table] = array(
-      'alias' => $base_table,
+    $this->table_queue[views_clean_alias($base_table)] = array(
+      'alias' => views_clean_alias($base_table),
       'table' => $base_table,
       'relationship' => $base_table,
       'join' => NULL,
@@ -89,21 +89,21 @@ class views_query {
     // init the tables with our primary table
     $this->tables[$base_table][$base_table] = array(
       'count' => 1,
-      'alias' => $base_table,
+      'alias' => views_clean_alias($base_table),
     );
 
     if ($base_field) {
       $this->fields[$base_field] = array(
-        'table' => $base_table,
+        'table' => views_clean_alias($base_table),
         'field' => $base_field,
-        'alias' => $base_field,
+        'alias' => views_clean_alias($base_field),
       );
     }
 
     $this->count_field = array(
       'table' => $base_table,
       'field' => $base_field,
-      'alias' => $base_field,
+      'alias' => views_clean_alias($base_field),
       'count' => TRUE,
     );
   }
@@ -125,7 +125,7 @@ class views_query {
    */
   function set_count_field($table, $field, $alias = NULL) {
     if (empty($alias)) {
-      $alias = $table . '_' . $field;
+      $alias = views_clean_alias($table . '_' . $field);
     }
     $this->count_field = array(
       'table' => $table,
@@ -621,7 +621,7 @@ class views_query {
     }
 
     if (!$alias && $table) {
-      $alias = $table . '_' . $field;
+      $alias = views_clean_alias($table . '_' . $field);
     }
 
     $name = $alias ? $alias : $field;
@@ -968,7 +968,7 @@ class views_query {
 
     $where = $this->condition_sql();
 
-    $query = "SELECT $fields\n FROM {" . $this->base_table . "} $this->base_table \n$joins $where $groupby $having $orderby";
+    $query = "SELECT $fields\n FROM {" . $this->base_table . "} ". views_clean_alias($this->base_table) ." \n$joins $where $groupby $having $orderby";
 
     $replace = array('&gt;' => '>', '&lt;' => '<');
     $query = strtr($query, $replace);
@@ -991,3 +991,15 @@ class views_query {
   }
 }
 
+/*
+ * Clean external table aliases by replacing a period with an underscore.
+ * 
+ * @param $alias
+ *   The alias that may need cleaning.
+ * @return
+ *   The alias with any periods replaced with underscores.
+ */
+function views_clean_alias($alias){
+  return  preg_replace('/\./', '_' , $alias); 
+}
+
