AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Datenbanken SQL Update ... mache ich was falsch?
Thema durchsuchen
Ansicht
Themen-Optionen

SQL Update ... mache ich was falsch?

Ein Thema von microtronx · begonnen am 28. Aug 2006 · letzter Beitrag vom 29. Aug 2006
Antwort Antwort
Seite 1 von 2  1 2      
microtronx

Registriert seit: 8. Mär 2005
Ort: Tapfheim
55 Beiträge
 
Delphi 2010 Enterprise
 
#1

SQL Update ... mache ich was falsch?

  Alt 28. Aug 2006, 19:35
Datenbank: Firebird • Version: 1.5.3.x • Zugriff über: Nativ über UIB Komponenten
Hallo,

kann es sein, dass ich an folgendem SQL-Script was falsch mache?

SQL-Code:
update GESAMTKOSTEN set ABHOL = (select EINZELKOSTEN.KOSTEN from EINZELKOSTEN where ART=1 and EINZELKOSTEN.AUFTRAGSNUMMER=GESAMTKOSTEN.AUFTRAGSNUMMER);
update GESAMTKOSTEN set ZUSTELL = (select EINZELKOSTEN.KOSTEN from EINZELKOSTEN where ART=2 and EINZELKOSTEN.AUFTRAGSNUMMER=GESAMTKOSTEN.AUFTRAGSNUMMER);
update GESAMTKOSTEN set PORTO = (select EINZELKOSTEN.KOSTEN from EINZELKOSTEN where ART=3 and EINZELKOSTEN.AUFTRAGSNUMMER=GESAMTKOSTEN.AUFTRAGSNUMMER);
Hintergrund:

In der EINZELKOSTEN Tabelle sind pro Auftrag mehrere Datensätze. Anhand von "ART" wird unterschieden, was das für Kosten sind.
In der GESAMTKOSTEN Tabelle gibt es pro Auftrag einen Datensatz aber für jede ART eine SPALTE.
(Die Tabellen / Namen sind erfunden ... aber das Prinzip ist gleich)

Einzelkosten hat ca 150.000 Datensätze. Die Gesamtkosten ca 50.000.

Wenn ich nun das o.g. Script starte, geht die Prozessorlast auf 75 bis 99% und auch nach 1 Stunde kein Ergebnis.

Eigentlich müsste es doch eine einfachere Möglichkeit geben, oder?

Kann mir einer einen Tip geben?
Yusuf Zorlu
yusuf.zorlu@microtronx.com

Meine Arbeit ist so geheim ... ich habe selbst keine Ahnung was ich überhaupt mache!
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.861 Beiträge
 
Delphi 11 Alexandria
 
#2

Re: SQL Update ... mache ich was falsch?

  Alt 28. Aug 2006, 19:43
Da Gesamtkosten nur eine Zusammenfassung der Einzelkosten darstellt, umfasst sie ja redundaten Daten.
Ich würde das durch eine SP lösen, welche die Daten bei Bedarf bereitstellt als sie in einer Extra Tabelle zu halten.

Die Abfrage selber würde ich über die Aggregatsfunktion SUM machen.
Markus Kinzler
  Mit Zitat antworten Zitat
microtronx

Registriert seit: 8. Mär 2005
Ort: Tapfheim
55 Beiträge
 
Delphi 2010 Enterprise
 
#3

Re: SQL Update ... mache ich was falsch?

  Alt 28. Aug 2006, 19:53
Zitat von mkinzler:
Da Gesamtkosten nur eine Zusammenfassung der Einzelkosten darstellt, umfasst sie ja redundaten Daten.
Ich würde das durch eine SP lösen, welche die Daten bei Bedarf bereitstellt als sie in einer Extra Tabelle zu halten.

Die Abfrage selber würde ich über die Aggregatsfunktion SUM machen.
Wie würdest Du die Abfrage mit SUM erstellen?
Yusuf Zorlu
yusuf.zorlu@microtronx.com

Meine Arbeit ist so geheim ... ich habe selbst keine Ahnung was ich überhaupt mache!
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.861 Beiträge
 
Delphi 11 Alexandria
 
#4

Re: SQL Update ... mache ich was falsch?

  Alt 28. Aug 2006, 19:56
Kann sein, daß ich die Struktur mißverstanden habe, aber ich würde es so machen:
select SUM(EINZELKOSTEN.KOSTEN) from EINZELKOSTEN GROUP BY ART and EINZELKOSTEN.AUFTRAGSNUMMER;
Markus Kinzler
  Mit Zitat antworten Zitat
microtronx

Registriert seit: 8. Mär 2005
Ort: Tapfheim
55 Beiträge
 
Delphi 2010 Enterprise
 
#5

Re: SQL Update ... mache ich was falsch?

  Alt 28. Aug 2006, 19:58
Zitat von mkinzler:
Kann sein, daß ich die Struktur mißverstanden habe, aber ich würde es so machen:
select SUM(EINZELKOSTEN.KOSTEN) from EINZELKOSTEN GROUP BY ART and EINZELKOSTEN.AUFTRAGSNUMMER;
Na das hätte ich auch gemacht aber, hier der Aufbau von Gesamt

auftragsnummer INTEGER,
ABHOL double,
ZUSTELL double,
PORTO double

und hier der Aufbau von Einzel:

Primary-Index: LONGINT autoinc
auftragsnummer: integer,
art: integer
kosten:double
Yusuf Zorlu
yusuf.zorlu@microtronx.com

Meine Arbeit ist so geheim ... ich habe selbst keine Ahnung was ich überhaupt mache!
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.861 Beiträge
 
Delphi 11 Alexandria
 
#6

Re: SQL Update ... mache ich was falsch?

  Alt 28. Aug 2006, 20:08
Dan würde ich es in dieser Richtung versuchen:
SQL-Code:
select
    a.Auftragsnummer,
    SUM(a.KOSTEN) as abhol,
    SUM(b.KOSTEN) as zustell,
    SUM(c.KOSTEN) as porto
from
    EINZELKOSTEN a,EINZELKOSTEN b, EINZELKOSTEN c
where
    a.Art = 1,
    b.Art = 1,
    c.Art = 1
GROUP BY AUFTRAGSNUMMER;
Markus Kinzler
  Mit Zitat antworten Zitat
microtronx

Registriert seit: 8. Mär 2005
Ort: Tapfheim
55 Beiträge
 
Delphi 2010 Enterprise
 
#7

Re: SQL Update ... mache ich was falsch?

  Alt 28. Aug 2006, 20:24
Zitat von mkinzler:
SQL-Code:
select
    a.Auftragsnummer,
    SUM(a.KOSTEN) as abhol,
    SUM(b.KOSTEN) as zustell,
    SUM(c.KOSTEN) as porto
from
    EINZELKOSTEN a,EINZELKOSTEN b, EINZELKOSTEN c
where
    a.Art = 1,
    b.Art = 1,
    c.Art = 1
GROUP BY AUFTRAGSNUMMER;
Wie würdest Du das als UPDATE machen? Ich muss das mal testen, ob das schneller ist als mein 1. Script. funktionieren tut das was ich am Anfang des Beitrages geschrieben habe, wenn ich das auf nur einpaar Aufträge begrenze schon ... nur bei allen Aufträgen legt das die Maschine lahm.
Yusuf Zorlu
yusuf.zorlu@microtronx.com

Meine Arbeit ist so geheim ... ich habe selbst keine Ahnung was ich überhaupt mache!
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.861 Beiträge
 
Delphi 11 Alexandria
 
#8

Re: SQL Update ... mache ich was falsch?

  Alt 28. Aug 2006, 20:27
Wie ich geschriebne habe, würde ich kein Update machen, da in der Gesamt-Tabelle das gleich stehen würde wie in der Abfrage.
Markus Kinzler
  Mit Zitat antworten Zitat
omata

Registriert seit: 26. Aug 2004
Ort: Nebel auf Amrum
3.154 Beiträge
 
Delphi 7 Enterprise
 
#9

Re: SQL Update ... mache ich was falsch?

  Alt 28. Aug 2006, 20:46
wegen Nichtbeachtung gelöscht...
  Mit Zitat antworten Zitat
Benutzerbild von Jelly
Jelly

Registriert seit: 11. Apr 2003
Ort: Moestroff (Luxemburg)
3.741 Beiträge
 
Delphi 2007 Professional
 
#10

Re: SQL Update ... mache ich was falsch?

  Alt 28. Aug 2006, 21:20
Zitat von microtronx:
update GESAMTKOSTEN set ABHOL = (select EINZELKOSTEN.KOSTEN from EINZELKOSTEN where ART=1 and EINZELKOSTEN.AUFTRAGSNUMMER=GESAMTKOSTEN.AUFTRAGSNUMMER);
und
Zitat von microtronx:
Einzelkosten hat ca 150.000 Datensätze. Die Gesamtkosten ca 50.000.
Da geh ich davon aus, dass der Select-Part für sich allein definitiv mehr als einen Datensatz liefert...

Auf welchen Werd soll denn deiner Meinung nach in Gesamtkosten.Abhol gesetzt werden... Soll sich die Datenbank da einen aussuchen

Du siehst, auf was ich raus bin
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 16:26 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz