Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   Delphi Problem mit UPDATE - Query (https://www.delphipraxis.net/62117-problem-mit-update-query.html)

Schlingel 31. Jan 2006 09:14

Datenbank: mySQL • Version: 5.0.18 • Zugriff über: DirectSql

Problem mit UPDATE - Query
 
Hallo,

Ich habe ein Problem mit einer Query-Abfrage die ich derzeit mit einer Notlösung behandle.
Aus Gründen der Performence möchte ich diese 2 Querys mit einer Abfrage abdecken.

Tabelle:

SQL-Code:
-- Table "batvol" DDL

CREATE TABLE `batvol` (
  `Number` bigint(20) unsigned NOT NULL auto_increment,
  `Value` decimal(24,12) NOT NULL,
  `TimeSt` decimal(18,12) unsigned NOT NULL,
  `Attribut` varchar(10) NOT NULL default '?',
  `Timestamp Update` timestamp NOT NULL default CURRENT_TIMESTAMP on update CURRENT_TIMESTAMP,
  PRIMARY KEY (`Number`)) ENGINE=MyISAM DEFAULT CHARSET=latin1 COMMENT='Table : battery voltage in 0.1 V='
Funktionierend:

SQL-Code:

 {Nr :=} SELECT MAX(`Number`) FROM `batvol`
 UPDATE `batvol` SET `Value`="273.1",`TimeSt`="38.41",`Attribut`="Change" WHERE Number=4 {Nr}
Wunsch: (eine Query in der Art)

SQL-Code:

 UPDATE `batvol` SET `Value`="273.1",`TimeSt`="38.41",`Attribut`="Change" WHERE Number=(SELECT MAX(`Number`) FROM `batvol`)


Danke im Vorraus

mkinzler 31. Jan 2006 09:22

Re: Problem mit UPDATE - Query
 
Ich glaube nicht das MySQL Nested Queries unterstützt

tomsel 31. Jan 2006 09:36

Re: Problem mit UPDATE - Query
 
Prinzipiell könnte so etwas gehen:

SQL-Code:
UPDATE `batvol` b SET `Value`="273.1",`TimeSt`="38.41",`Attribut`="Change" WHERE NOT EXISTS(SELECT * FROM `batvol` WHERE NUMBER > b.NUMBER)
lässt sich das in MySQL umsetzen?

marabu 31. Jan 2006 09:36

Re: Problem mit UPDATE - Query
 
Hi,

ab Version 4.1 werden subqueries unterstützt. Probiere doch mal:

SQL-Code:
UPDATE batvol SET
  Value = 273.1, TimeSt = 38.41, Attribut = 'Change'
WHERE Number IN (SELECT MAX(Number) FROM batvol)
Grüße vom marabu

sah nicht so schön aus: `Value` = "273.1"

Schlingel 1. Feb 2006 09:25

Re: Problem mit UPDATE - Query
 
Danke für die Antworten, doch leider nicht erfolgreich.

Error Code : 1093
You can't specify target table 'batvol' for update in FROM clause
(20 ms taken)

Please help....

r2c2 1. Feb 2006 10:45

Re: Problem mit UPDATE - Query
 
Zitat:

Zitat von Schlingel
Error Code : 1093
You can't specify target table 'batvol' for update in FROM clause
(20 ms taken)

Zwei Möglichkeiten fallen mir ein:
1.) UPDATE und Subquery harmonieren nicht miteinander(hab Subqueries bisher nur mit SELECT benutzt) -->fänd ich jetzt komisch
2.) Das FROM wird auf das UPDATE und nicht auf das SELECT bezogen --> ein zusätzliches Klammerpar könnte da Abhilfe schaffen...

mfg

Christian


Alle Zeitangaben in WEZ +1. Es ist jetzt 12:40 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