AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Datenbanken Delphi SQL: JOIN und UPDATE
Thema durchsuchen
Ansicht
Themen-Optionen

SQL: JOIN und UPDATE

Ein Thema von ts-d · begonnen am 31. Mär 2009 · letzter Beitrag vom 3. Apr 2009
Antwort Antwort
Seite 3 von 3     123   
mkinzler
(Moderator)

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

Re: SQL: JOIN und UPDATE

  Alt 2. Apr 2009, 18:59
Nein, weil bei einem modernen DBMS ein TTable ein Query mit der Abfrage select * from <Tabelle>; ist.
Markus Kinzler
  Mit Zitat antworten Zitat
hoika

Registriert seit: 5. Jul 2006
Ort: Magdeburg
8.275 Beiträge
 
Delphi 10.4 Sydney
 
#22

Re: SQL: JOIN und UPDATE

  Alt 2. Apr 2009, 20:26
Hallo ts-d,

ich meinte, dass du mindestens zum Schreiben eine TTable,
und keine TQuery benutzen sollst.


Heiko
Heiko
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

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

Re: SQL: JOIN und UPDATE

  Alt 2. Apr 2009, 20:28
@Heiko: Warum? Sehe da keine Notwendigkeit
Markus Kinzler
  Mit Zitat antworten Zitat
hoika

Registriert seit: 5. Jul 2006
Ort: Magdeburg
8.275 Beiträge
 
Delphi 10.4 Sydney
 
#24

Re: SQL: JOIN und UPDATE

  Alt 2. Apr 2009, 20:32
Hallo minzler,

siehe #13

Wir reden wie gesagt von Paradox.

TQuery: lahm
TTable: schnell

Naja, meistens.


Heiko
Heiko
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

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

Re: SQL: JOIN und UPDATE

  Alt 2. Apr 2009, 20:37
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.
Markus Kinzler
  Mit Zitat antworten Zitat
ts-d

Registriert seit: 29. Apr 2008
31 Beiträge
 
#26

Re: SQL: JOIN und UPDATE

  Alt 3. Apr 2009, 08:12
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
Angehängte Dateien
Dateityp: zip paket_160.zip (8,6 KB, 12x aufgerufen)
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

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

Re: SQL: JOIN und UPDATE

  Alt 3. Apr 2009, 08:17
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)
Markus Kinzler
  Mit Zitat antworten Zitat
Benutzerbild von Bernhard Geyer
Bernhard Geyer

Registriert seit: 13. Aug 2002
17.196 Beiträge
 
Delphi 10.4 Sydney
 
#28

Re: SQL: JOIN und UPDATE

  Alt 3. Apr 2009, 08:56
Zitat von ts-d:
Ich will's noch nicht ganz wahr haben. Die Krücke Access schafft's, und Delphi / Paradox nicht???
Wenn Access eine Krücke (benötigt) dann benötigt man für Paradox einen Rollstuhl. Auch wenn Access keine optimale Engine darstellt, ist es doch um Welten bessser als Paradox. Paradox hat sein (merkbaren) Wurzeln in den 80ern und ist damit eher schon ein Dinosaurier der noch eingesetzten SW.
Windows Vista - Eine neue Erfahrung in Fehlern.
  Mit Zitat antworten Zitat
ts-d

Registriert seit: 29. Apr 2008
31 Beiträge
 
#29

Re: SQL: JOIN und UPDATE

  Alt 3. Apr 2009, 13:40
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:
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
Dieser Selectbefehl ist zu lang für SQL.Text := ... usw.
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
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 3 von 3     123   


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 13:03 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