diff --git a/lib/modules/Sql.pmod/Sql.pike b/lib/modules/Sql.pmod/Sql.pike
index 351951a4082b08baf548d55ff855b605ebf69cc8..618f0a2a259a32033ef24f25bc9b429c51a801d7 100644
--- a/lib/modules/Sql.pmod/Sql.pike
+++ b/lib/modules/Sql.pmod/Sql.pike
@@ -1,5 +1,5 @@
 /*
- * $Id: Sql.pike,v 1.83 2005/10/05 07:51:32 nilsson Exp $
+ * $Id: Sql.pike,v 1.84 2005/11/24 23:15:57 nilsson Exp $
  *
  * Implements the generic parts of the SQL-interface
  *
@@ -300,20 +300,30 @@ static private array(mapping(string:mixed)) res_obj_to_array(object res_obj)
     array(mapping(string:mixed)) res = ({});
     array(string) fieldnames;
     array(mixed) row;
+
     array(mapping) fields = res_obj->fetch_fields();
+    if(!sizeof(fields)) return ({});
+
+    int has_table = fields[0]->table && fields[0]->table!="";
 
-    fieldnames = (map(fields,
-		      lambda (mapping(string:mixed) m) {
-			return (m->table||"") + "." + m->name;
-		      }) +
-                  fields->name);
+    if(has_table)
+      fieldnames = (map(fields,
+			lambda (mapping(string:mixed) m) {
+			  return (m->table||"") + "." + m->name;
+			}) +
+		    fields->name);
+    else
+      fieldnames = fields->name;
 
     if (case_convert)
       fieldnames = map(fieldnames, lower_case);
 
-
-    while (row = res_obj->fetch_row())
-      res += ({ mkmapping(fieldnames, row + row) });
+    if(has_table)
+      while (row = res_obj->fetch_row())
+	res += ({ mkmapping(fieldnames, row + row) });
+    else
+      while (row = res_obj->fetch_row())
+	res += ({ mkmapping(fieldnames, row) });
 
     return res;
   }