AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Datenbanken MSAccess SQL Update Statement verkürzen?
Thema durchsuchen
Ansicht
Themen-Optionen

MSAccess SQL Update Statement verkürzen?

Ein Thema von HCB · begonnen am 25. Mai 2021 · letzter Beitrag vom 27. Mai 2021
Antwort Antwort
Seite 2 von 2     12   
HCB

Registriert seit: 12. Feb 2020
134 Beiträge
 
Delphi 12 Athens
 
#11

AW: MSAccess SQL Update Statement verkürzen?

  Alt 27. Mai 2021, 07:10
Hallo Detlef,
weil in der Artikeltabelle der mittlere/niedrigste EKPreis für den Artikel gespeichert wird um dann die Preisberechnungen für die VK's machen zu können.
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.537 Beiträge
 
Delphi 11 Alexandria
 
#12

AW: MSAccess SQL Update Statement verkürzen?

  Alt 27. Mai 2021, 07:14
Im Sinne der Normalisierung gilt aber eigentlich der Grundsatz, dass Daten, die sich aus anderen Daten berechnen/ermitteln lassen, nicht redundant abgespeichert werden, um mögliche Anomalien zu vermeiden. Wenn die Performance sehr darunter leidet, kann man in Ausnahmefällen davon abweichen, muss dann aber auch sicherstellen, dass die Daten immer konsistent sind.
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
Jumpy

Registriert seit: 9. Dez 2010
Ort: Mönchengladbach
1.733 Beiträge
 
Delphi 6 Enterprise
 
#13

AW: MSAccess SQL Update Statement verkürzen?

  Alt 27. Mai 2021, 08:37
EINE Frage hätte ich noch:
Ich möchte aus einer Lieferanten Tabelle den günstigsten EK Preis für einen Artikel auswählen und diesen als EKPreis in der Artikel Tabelle speichern, also updaten.
Den günstigen Lieferantenpreis auszuwählen hab ich schon:

SELECT Min(A.ArtLiefEKPreis) As Preis
From ArtLief As A
Group By A.ArtLiefArtNr;

Wie aber kann ich aber ein Update des EKpreis der Artikeltabelle machen? Funktioniert das mit join und Access?
Hat jemand einen Lösungsvorschlag? Das wäre toll.

LG Harry
AUf die Gefahr, dass das mit Access wieder nicht geht und ohne die genauen Feldnamen zu kennen, als Subselect:

SQL-Code:
Update Artikel A
Set A.EKPREIS=
(SELECT Min(ArtLiefEKPreis) From ArtLief Where ArtLiefArtNr=A.ArtNr)
Du hast dann auch die Möglichkeit, je nach DB, das MIN z.B. durch AVG zu ersetzen für den Durschnittspreis o.ä.
Ralph
  Mit Zitat antworten Zitat
HCB

Registriert seit: 12. Feb 2020
134 Beiträge
 
Delphi 12 Athens
 
#14

AW: MSAccess SQL Update Statement verkürzen?

  Alt 27. Mai 2021, 09:16
@jumpy
Danke für Deine Unterstützung! Die Feldnamen stimmen so.

Update Artikel A
Set A.EKPREIS=
(SELECT Min(ArtLiefEKPreis) From ArtLief Where ArtLiefArtNr=A.ArtNr)

Leider wirft es mir beim Ausführen folgenden Fehler raus:
Statement #1:
Operation muss eine aktualisierbare Abfrage verwenden.

Ich bin neu auf dem SQL Sektor, bin deshalb etwas überfordert.

LG Harry
  Mit Zitat antworten Zitat
HCB

Registriert seit: 12. Feb 2020
134 Beiträge
 
Delphi 12 Athens
 
#15

AW: MSAccess SQL Update Statement verkürzen?

  Alt 27. Mai 2021, 13:28
Ok an alle, so hab ich das gelöst (wenn mal jemand das geleiche Problem hat):

//temp Tabelle erstellen
CREATE TABLE AATest (
ArtNr TEXT(22) NOT NULL,
EKMin currency
);
//mit der Abfrage die temp Tabelle füllen
INSERT INTO AATest (ArtNr, EKMin)
SELECT ArtLiefArtNr, Min(ArtLiefEKPreis) From ArtLief
Group By ArtLiefArtNr;
// Das Update durchführen
UPDATE sArtikel
INNER JOIN AATest ON sArtikel.ArtNr = AATest.ArtNr
SET sArtikel.ArtEKQuer = AATest.EKMin;
// Temp Tabelle wieder löschen
Drop Table AATest;

Danke für Eure Hilfestellung.

LG Harry
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 2 von 2     12   


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 02:29 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