Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   Delphi SELECT kontra UPDATE im SQL? Über zwei Tabellen? (https://www.delphipraxis.net/132767-select-kontra-update-im-sql-ueber-zwei-tabellen.html)

spacewolf 19. Apr 2009 10:18

Datenbank: Firebird • Version: 2.x • Zugriff über: IBX

SELECT kontra UPDATE im SQL? Über zwei Tabellen?
 
Moin,

hab grad n BUG in meiner neuronalen Schaltzentrale. :roll:

Die folgende SQL Abfrage funktioniert:

Code:
SELECT k.id,k.datum,k.kdatum,k.text from kartei k
left outer join karteiinfo ki on ki.kid = k.id
WHERE fremdid=4922
Das folgende SQL Update aber nicht?

Code:
UPDATE kartei k SET k.kdatum='01.01.1977'
left outer join karteiinfo ki on ki.kid = k.id
where fremdid=4922
hat jemand ne Idee was ich da nun falsch mach?

jaenicke 19. Apr 2009 10:25

Re: SELECT kontra UPDATE im SQL? Über zwei Tabellen?
 
Wofür denn das join in dem Update? Funktioniert darin das überhaupt, das ist doch eigentlich zum Zusammensetzen der Ergebnistabelle einer Abfrage da. :stupid:

spacewolf 19. Apr 2009 10:34

Re: SELECT kontra UPDATE im SQL? Über zwei Tabellen?
 
Hallo jaenicke,

sowas in der Art habe ich vor:

Delphi-Quellcode:
UPDATE kartei SET kdatum='01.01.1977'
where (kartei.id = karteiinfo.kid)
AND (karteiinfo.fremdid=4922)
also zwei tabellen sind miteinander verknüpft und die zweite tabelle stellt die bedinung für das update von der ersten tabelle und genau da ist mein problem... :wall:

der Andreas

jaenicke 19. Apr 2009 10:37

Re: SELECT kontra UPDATE im SQL? Über zwei Tabellen?
 
Fehlt da nicht einfach nur die zweite Tabelle?
SQL-Code:
UPDATE kartei, karteiinfo ...

spacewolf 19. Apr 2009 10:52

Re: SELECT kontra UPDATE im SQL? Über zwei Tabellen?
 
in dem falle kommt "token unknown" weil im update keine zwei tabellen aktzeptiert werden

jaenicke 19. Apr 2009 10:54

Re: SELECT kontra UPDATE im SQL? Über zwei Tabellen?
 
Schau mal hier:
http://en.wikipedia.org/wiki/Update_(SQL)
Zitat:

The SQL:2003 standard does not support updates of a joined table. Therefore, the following method needs to be used. Note that the subselect in the SET clause must be a scalar subselect, i.e., it can return at most a single row.
Das Beispiel müsste das ja sein.

spacewolf 19. Apr 2009 11:02

Re: SELECT kontra UPDATE im SQL? Über zwei Tabellen?
 
mathematische Begründung mit 9 Buchstaben: "geht nicht"

:wall:

habsch mir schon fast gedacht

bisher konnt ichs mit dem subselect umschiffen und dachte immer ich stell mich zu glatt an

danke Dir :dp:

mkinzler 19. Apr 2009 12:00

Re: SELECT kontra UPDATE im SQL? Über zwei Tabellen?
 
Entweder 2 getrennte Updates oder schreib dir eine SP dafür

omata 19. Apr 2009 16:09

Re: SELECT kontra UPDATE im SQL? Über zwei Tabellen?
 
Vielleicht so...
SQL-Code:
UPDATE kartei k
SET kdatum = '01.01.1977'
WHERE EXISTS (SELECT *
              FROM karteiinfo
              WHERE kid = k.id
                AND fremdid = 4922)

mjustin 20. Apr 2009 07:31

Re: SELECT kontra UPDATE im SQL? Über zwei Tabellen?
 
Oder so:
SQL-Code:
UPDATE kartei k
SET kdatum = '01.01.1977'
WHERE ID IN (SELECT KID
             FROM karteiinfo
             WHERE fremdid = 4922)


Alle Zeitangaben in WEZ +1. Es ist jetzt 03:14 Uhr.

Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz