Refactoring sql-Abfrage für Steuertabelle
authorG. Richardson <grichardson@kivitec.de>
Tue, 22 Jan 2019 14:05:14 +0000 (15:05 +0100)
committerGeoff <geoff@condor.localhost>
Sat, 10 Aug 2019 10:52:53 +0000 (12:52 +0200)
statt 2 subselects pro Automatik- und Skontokonto, jeweils ein Join, um
die Kontonummer und Kontenbeschreibung direkt auszulesen.

SL/AM.pm

index a2ae7d5..a06f8b3 100644 (file)
--- a/SL/AM.pm
+++ b/SL/AM.pm
@@ -1024,13 +1024,16 @@ sub taxes {
                    t.taxkey,
                    t.taxdescription,
                    round(t.rate * 100, 2) AS rate,
-                   (SELECT accno FROM chart WHERE id = chart_id) AS taxnumber,
-                   (SELECT description FROM chart WHERE id = chart_id) AS account_description,
-                   (SELECT accno FROM chart WHERE id = skonto_sales_chart_id) AS skonto_chart_accno,
-                   (SELECT description FROM chart WHERE id = skonto_sales_chart_id) AS skonto_chart_description,
-                   (SELECT accno FROM chart WHERE id = skonto_purchase_chart_id) AS skonto_chart_purchase_accno,
-                   (SELECT description FROM chart WHERE id = skonto_purchase_chart_id) AS skonto_chart_purchase_description
+                   tc.accno               AS taxnumber,
+                   tc.description         AS account_description,
+                   ssc.accno              AS skonto_chart_accno,
+                   ssc.description        AS skonto_chart_description,
+                   spc.accno              AS skonto_chart_purchase_accno,
+                   spc.description        AS skonto_chart_purchase_description
                  FROM tax t
+                 LEFT JOIN chart tc  ON (tc.id = t.chart_id)
+                 LEFT JOIN chart ssc ON (ssc.id = t.skonto_sales_chart_id)
+                 LEFT JOIN chart spc ON (spc.id = t.skonto_purchase_chart_id)
                  ORDER BY taxkey, rate|;
 
   my $sth = $dbh->prepare($query);