/[thuban]/branches/WIP-pyshapelib-bramz/Thuban/Model/transientdb.py
ViewVC logotype

Diff of /branches/WIP-pyshapelib-bramz/Thuban/Model/transientdb.py

Parent Directory Parent Directory | Revision Log Revision Log | View Patch Patch

revision 1002 by frank, Thu May 22 19:41:57 2003 UTC revision 1009 by frank, Fri May 23 08:26:58 2003 UTC
# Line 346  class TransientJoinedTable(TransientTabl Line 346  class TransientJoinedTable(TransientTabl
346      """A Table in the transient DB that contains a join of two tables"""      """A Table in the transient DB that contains a join of two tables"""
347    
348      def __init__(self, transient_db, left_table, left_field,      def __init__(self, transient_db, left_table, left_field,
349                   right_table, right_field = None):                   right_table, right_field = None, outer_join = False):
350          """Create a new table in the transient DB as a join of two tables.          """Create a new table in the transient DB as a join of two tables.
351    
352          Both input tables, left_table and right_table must have a          Both input tables, left_table and right_table must have a
# Line 371  class TransientJoinedTable(TransientTabl Line 371  class TransientJoinedTable(TransientTabl
371              self.right_field = right_field              self.right_field = right_field
372          else:          else:
373              self.right_field = self.left_field              self.right_field = self.left_field
374            self.outer_join = outer_join
375          self.create()          self.create()
376    
377      def Title(self):      def Title(self):
# Line 399  class TransientJoinedTable(TransientTabl Line 400  class TransientJoinedTable(TransientTabl
400    
401          # Copy the joined data to the table.          # Copy the joined data to the table.
402          internal_names = [col.internal_name for col in self.columns]          internal_names = [col.internal_name for col in self.columns]
403            if self.outer_join:
404                join_operator = 'LEFT OUTER JOIN'
405            else:
406                join_operator = 'JOIN'
407          stmt = ("INSERT INTO %s (id, %s) SELECT %s.id, %s FROM %s"          stmt = ("INSERT INTO %s (id, %s) SELECT %s.id, %s FROM %s"
408                  " JOIN %s ON %s = %s;"                  " %s %s ON %s = %s;"
409                  % (self.tablename,                  % (self.tablename,
410                     ", ".join(internal_names),                     ", ".join(internal_names),
411                     self.left_table.tablename,                     self.left_table.tablename,
412                     ", ".join(internal_names),                     ", ".join(internal_names),
413                     self.left_table.tablename,                     self.left_table.tablename,
414                       join_operator,
415                     self.right_table.tablename,                     self.right_table.tablename,
416                     self.orig_to_internal[self.left_field],                     self.orig_to_internal[self.left_field],
417                     self.orig_to_internal[self.right_field]))                     self.orig_to_internal[self.right_field]))

Legend:
Removed from v.1002  
changed lines
  Added in v.1009

[email protected]
ViewVC Help
Powered by ViewVC 1.1.26