Query durch LEFT JOIN vereinfacht und die Ergebnisanzahl deutlich reduziert.
authorMoritz Bunkus <m.bunkus@linet-services.de>
Thu, 26 Apr 2007 15:35:43 +0000 (15:35 +0000)
committerMoritz Bunkus <m.bunkus@linet-services.de>
Thu, 26 Apr 2007 15:35:43 +0000 (15:35 +0000)
SL/Form.pm

index da224ab..cbc4df1 100644 (file)
@@ -1944,14 +1944,13 @@ sub create_links {
     }
 
     # now get the account numbers
-     $query = qq|SELECT c.accno, c.description, c.link, c.taxkey_id, tk.tax_id
-                 FROM chart c, taxkeys tk
-                 WHERE c.link LIKE ? 
-                   AND (    tk.chart_id = c.id OR     c.link LIKE '%_tax%') 
-                   AND (NOT tk.chart_id = c.id OR NOT c.link LIKE '%_tax%')
-                   AND (tk.id = (SELECT id FROM taxkeys WHERE taxkeys.chart_id = c.id AND startdate <= $transdate ORDER BY startdate DESC LIMIT 1)
-                     OR c.link LIKE '%_tax%')
-                 ORDER BY c.accno|;
+    $query = qq|SELECT c.accno, c.description, c.link, c.taxkey_id, tk.tax_id
+                FROM chart c
+                LEFT JOIN taxkeys tk ON (tk.chart_id = c.id)
+                WHERE c.link LIKE ?
+                  AND (tk.id = (SELECT id FROM taxkeys WHERE taxkeys.chart_id = c.id AND startdate <= $transdate ORDER BY startdate DESC LIMIT 1)
+                    OR c.link LIKE '%_tax%')
+                ORDER BY c.accno|;
 
     $sth = $dbh->prepare($query);
     do_statement($self, $sth, $query, "%$module%");