Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   SQL-Statement funktioniert nicht (https://www.delphipraxis.net/161518-sql-statement-funktioniert-nicht.html)

khh 7. Jul 2011 09:55

Datenbank: firebird • Version: 2.1 • Zugriff über: zeos

SQL-Statement funktioniert nicht
 
Hallo zusammen
folgendes Statement :
Code:
update artikelpreise p1
set p1.bruttopreis =
(SELECT bruttoneu as bruttopreis FROM artikelpreiseaenderung p2
WHERE p1.artikelpreis_id = p2.artikelpreis_id ),  
p1.nettopreis = (SELECT (bruttoneu / (100  + p2.mwstsatz ) *100 ) as nettopreis FROM artikelpreiseaenderung p2
WHERE p1.artikelpreis_id = p2.artikelpreis_id )
funktioniert solange in artikelpreise und artikelpreiseaenderung die gleiche Anzahl DS vorhanden sind.
Wenn in der Tabelle artikelpreise aber weitere DS stehen werden diese logischerweise auf 0 gesetzt.

Das Statement wie folgt zu erweitern funktioniert auch nicht:

Code:
update artikelpreise p1
set p1.bruttopreis =
(SELECT bruttoneu as bruttopreis FROM artikelpreiseaenderung p2
WHERE p1.artikelpreis_id = p2.artikelpreis_id ),  
p1.nettopreis = (SELECT (bruttoneu / (100  + p2.mwstsatz ) *100 ) as nettopreis FROM artikelpreiseaenderung p2
WHERE p1.artikelpreis_id = p2.artikelpreis_id )


WHERE p1.artikelpreis_id = p2.artikelpreis_id;
hier kennt er p2 der letzten where-Klausel nicht:-(

was mache ich falsch?


Danke Gruss KH

mkinzler 7. Jul 2011 10:06

AW: SQL-Statement funkt nicht
 
Erstelle einen Execution Block und drreh die Logik um:
Schleife über die Ändetungen und dann Update.

Noch besser wäre es aber, die Artikeltabelle zu "snow-flaken" ( Erweiterung um Gültigkeitsbereich)

jobo 7. Jul 2011 10:21

AW: SQL-Statement funkt nicht
 
Das Update Statement selbst braucht auch eine Where Clause, wenn Du bei einem reinen Update Statement bleiben willst.

zb.
SQL-Code:
update artikelpreise p1
   set p1.bruttopreis =
        (SELECT bruttoneu as bruttopreis
           FROM artikelpreiseaenderung p2
          WHERE p1.artikelpreis_id = p2.artikelpreis_id),
       p1.nettopreis =
        (SELECT (bruttoneu / (100 + p2.mwstsatz) * 100)
         as nettopreis
           FROM artikelpreiseaenderung p2
          WHERE p1.artikelpreis_id = p2.artikelpreis_id)
  where p1.artikelpreis_id in
       (select artikelpreis_id from artikelpreiseaenderung )
Ich weiß aber nicht, ob 'where.. in..' so in Firbird funktioniert, notfalls dazu die Syntax anpassen.

DeddyH 7. Jul 2011 10:34

AW: SQL-Statement funkt nicht
 
IIRC funktioniert das so (kann ich hier aber gerade mangels Firebird nicht probieren), aber man kann zur Not auch auf EXISTS ausweichen.

jobo 7. Jul 2011 10:37

AW: SQL-Statement funkt nicht
 
Ich hab hier kein FB, aber wenn wir das demokratisch regeln können:
Ich bin auch dafür, dass es funktioniert! ;)

DeddyH 7. Jul 2011 10:38

AW: SQL-Statement funkt nicht
 
:cheers:

Luckie 7. Jul 2011 10:45

AW: SQL-Statement funkt nicht
 
@khh: Ich würde dich bitten wenigstens den Beitragstitel in ordentlichen Deutsch zu verfassen, damit man mit der Suche zumindest eine minimale Chance hat den Beitrag zu finden. Danke.

jobo 7. Jul 2011 10:54

AW: SQL-Statement funkt nicht
 
Aber die Beiträg müsen nich in orntlichen deutsch oder? ;)

khh 7. Jul 2011 11:28

AW: SQL-Statement funkt nicht
 
Zitat:

Zitat von jobo (Beitrag 1110507)
Das Update Statement selbst braucht auch eine Where Clause, wenn Du bei einem reinen Update Statement bleiben willst.

zb.
SQL-Code:
update artikelpreise p1
   set p1.bruttopreis =
        (SELECT bruttoneu as bruttopreis
           FROM artikelpreiseaenderung p2
          WHERE p1.artikelpreis_id = p2.artikelpreis_id),
       p1.nettopreis =
        (SELECT (bruttoneu / (100 + p2.mwstsatz) * 100)
         as nettopreis
           FROM artikelpreiseaenderung p2
          WHERE p1.artikelpreis_id = p2.artikelpreis_id)
  where p1.artikelpreis_id in
       (select artikelpreis_id from artikelpreiseaenderung )
Ich weiß aber nicht, ob 'where.. in..' so in Firbird funktioniert, notfalls dazu die Syntax anpassen.

ich danke euch, so funktionierts :-)
wobei ich hier überlege, ob 'where.. in..' nicht ziemlich zeitintensiv ist?

p80286 7. Jul 2011 11:33

AW: SQL-Statement funkt nicht
 
Zitat:

Zitat von Luckie (Beitrag 1110515)
@khh: Ich würde dich bitten wenigstens den Beitragstitel in ordentlichen Deutsch zu verfassen, damit man mit der Suche zumindest eine minimale Chance hat den Beitrag zu finden. Danke.

Wo ist das Problem?
"Das SQL-Statement funkt nicht". Eine klare unmißverständliche Aussage.
Ich frage mich nur was sollte ein SQL-Statement funken?
Sind da bestimmte Frequenzen von betroffen?
Handelt es sich vllt. um Morsecodes?
(nein, dann würde man von Morsen und nicht von Funken sprechen)

Gruß
K-H


Alle Zeitangaben in WEZ +1. Es ist jetzt 07:36 Uhr.
Seite 1 von 2  1 2      

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