Re: SQL: JOIN und UPDATE
Nein, weil bei einem modernen DBMS ein TTable ein Query mit der Abfrage
SQL-Code:
ist.
select * from <Tabelle>;
|
Re: SQL: JOIN und UPDATE
Hallo ts-d,
ich meinte, dass du mindestens zum Schreiben eine TTable, und keine TQuery benutzen sollst. Heiko |
Re: SQL: JOIN und UPDATE
@Heiko: Warum? Sehe da keine Notwendigkeit
|
Re: SQL: JOIN und UPDATE
Hallo minzler,
siehe #13 Wir reden wie gesagt von Paradox. TQuery: lahm TTable: schnell Naja, meistens. Heiko |
Re: SQL: JOIN und UPDATE
Ich habe mich durch den Verlauf der Diskussion auf eine falsche Fährte begeben. Bei Patadox wird ja der Query auf Tables abgebildet. Bei "richtigen" DBMS umgekehrt.
|
Re: SQL: JOIN und UPDATE
Liste der Anhänge anzeigen (Anzahl: 1)
Ich will's noch nicht ganz wahr haben. Die Krücke Access schafft's, und Delphi / Paradox nicht???
Testweise habe ich Delphi mal eine Aktualisierungsabfrage mit JOIN angelegt. Sie funktioniert: UPDATE _auftragpos INNER JOIN _Rabatte ON [_auftragpos].Auftrnum = [_Rabatte].Auftrnum and [_auftragpos].Pos_h = [_Rabatte].Pos_h SET [_auftragpos].RABATTSATZ = [_Rabatte].[Rabattsatz] WHERE [_auftragpos].[pos_u] = 0; wobei Tabelle 1 = auftragpos.db (Paradoxtabelle in Access importiert) und Tabelle 2 = rabatte.db (ebenso) und in Tabelle 2 Auftrnum + pos_h eindeutige Datensätze darstellen, während in Tabelle 1 das nicht der Fall ist, weil die Unterpositionen noch mit dabei sind (daher die WHERE-Klausel "WHERE pos_u = o"). Ich schicke mal die Dateien mit (kleiner Auszug von ein paar Datensätzen): 1. Datenbank Access mit beiden Tabellen und der funktionierenden Abfrage 2. beide Tabellen im Paradoxformat |
Re: SQL: JOIN und UPDATE
Paradox ist halt total veraltet! Die BDE ist auch schon seit D6(!) als verlatet bezeichnet und wird seither nicht mehr weiterentwickelt. Nimm was gescheites und es geht. ( Access würde ich auch nicht verwenden)
|
Re: SQL: JOIN und UPDATE
Zitat:
|
Re: SQL: JOIN und UPDATE
Ich habe jetzt selber eine Lösung gefunden, wenn auch keine sonderlich geniale - aber sie funktioniert und braucht nur ca. 10 Sekunden gegenüber der vorgeschlagenen, die hochgerechnet 4,5 Stunden braucht (500 Datensätze pro Minute bei ca. 118.000 Datensätzen !!!):
Durch SELECT eine Abfrage erzeugen, die die Werte beider Tabellen zusammenfasst:
SQL-Code:
Dieser Selectbefehl ist zu lang für SQL.Text := ... usw.
SELECT
a.Auftrnum, a.positnum, a.menge, a.modellnum, a.ARTIKELBESCHR, a.LPREISMSTOFF, a.DIFFSOLLPREIS, a.ZUBEHOER, a.BESTAETPREIS, a.EPREISRAB, a.fz1, a.mzbh, a.bestpreis, a.fz, a.rabatt, a.BETRAG, a.RABATTBETRAG, a.pos_h, a.pos_u, b.rabattsatz FROM "auftragpos.db" a INNER JOIN "Rabatte.db" b ON a.Auftrnum = b.Auftrnum and a.Pos_h = b.Pos_h WHERE a.pos_u = 0 Daher mache ich's mit dem Befehl Abfrage.SQL.LoadFromFile(Verzeichnis + Dateiname); Dann erzeuge ich eine neue Instanz Batchmove, wähle die eben erzeugte Abfrage als Source und lasse den Batchmove über die Option batCopy (Mode) eine neue Tabelle erzeugen, die dann genau so aussieht, wie ich sie haben möchte. [edit=mkinzler]SQL-Tag eingefügt Mfg, mkinzler[/edit] Danke schön - ich lern's auch noch, vg Thomas |
Alle Zeitangaben in WEZ +1. Es ist jetzt 10:20 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