AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Datenbanken Update mit Werten aus der gleichen Tabelle und anderen Tabellen

Update mit Werten aus der gleichen Tabelle und anderen Tabellen

Ein Thema von Ykcim · begonnen am 29. Jul 2019 · letzter Beitrag vom 30. Jul 2019
Antwort Antwort
Ykcim

Registriert seit: 29. Dez 2006
Ort: NRW
804 Beiträge
 
Delphi 10.4 Sydney
 
#1

Update mit Werten aus der gleichen Tabelle und anderen Tabellen

  Alt 29. Jul 2019, 16:47
Datenbank: MySQL • Version: 5 • Zugriff über: UniDac
Hallo Zusammen,

ich möchte ein Update machen, bei dem ich die Daten einer Tabelle und die anderer Tabellen zusammenführe.

In der Tabelle AS400 möchte ich das Feld OAAGBZ bei den Datensätzen, wo das Feld OAMANR like 'SU%' erfüllt ist mit folgendem Inhalt füllen:
Delphi-Quellcode:
select concat(a.oaagbz,' HN.',Right(p.stkomp,3),' ', t.azabme) from as400 a
left join phstru p on p.stbgnr=a.watenr and p.tamagr=3500
left join teilestamm t on t.aztenr=p.stkomp
where a.oamanr like 'SU%'
and t.temagr=3500
and p.tamagr=3500
group by a.watenr
Dazu habe ich versucht ein Update-Statement zu schreiben, aber das bekomme ich nicht ans Laufen:
Delphi-Quellcode:
update as400 as b
left join (select concat(a.oaagbz,' HN.',Right(p.stkomp,3),' ', t.azabme) as Bezeichnung from as400 a
    left join phstru p on p.stbgnr=a.watenr and p.tamagr=3500
    left join teilestamm t on t.aztenr=p.stkomp
    where a.oamanr like 'SU%'
    and t.temagr=3500
    and p.tamagr=3500
    group by a.watenr) as t
set b.oaagbz=t.Bezeichnung
where b.waaunr=t.waaunr and b.waaupo=t.waaupo and b.oaagnr=t.oaagnr
Fehlermeldung lautet:
Delphi-Quellcode:
You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'set b.oaagbz=t.Bezeichnung
where b.waaunr=t.waaunr and b.waaupo=t.waaupo and b.
' at line 9
Aber ich habe den Eindruck, dass ich einen grundsätzlichen Denkfehler habe...

Kann mir jemand helfen?

Vielen Dank
Patrick
Patrick
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

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

AW: Update mit Werten aus der gleichen Tabelle und anderen Tabellen

  Alt 29. Jul 2019, 16:50
Man kann keinen Join updaten. Aber eine Tabelle mit Werten aus einem Join.

SQL-Code:
update
  as400 b
set
  b.oaagbz=t.Bezeichnung from ( <Join>) t
where ...
Markus Kinzler

Geändert von mkinzler (29. Jul 2019 um 16:53 Uhr)
  Mit Zitat antworten Zitat
Ykcim

Registriert seit: 29. Dez 2006
Ort: NRW
804 Beiträge
 
Delphi 10.4 Sydney
 
#3

AW: Update mit Werten aus der gleichen Tabelle und anderen Tabellen

  Alt 29. Jul 2019, 17:09
Ok, ich habe es jetzt so versucht:
Delphi-Quellcode:
update as400 as b
set b.oaagbz=t.Bezeichnung from
    (select concat(a.oaagbz,' HN.',Right(p.stkomp,3),' ', t.azabme) as Bezeichnung from as400 a
      left join phstru p on p.stbgnr=a.watenr and p.tamagr=3500
      left join teilestamm t on t.aztenr=p.stkomp
      where a.oamanr like 'SU%'
      and t.temagr=3500
      and p.tamagr=3500
     group by a.watenr) as t
where b.waaunr=t.waaunr and b.waaupo=t.waaupo and b.oaagnr=t.oaagnr
Aber da gefällt ihm auch noch etwas nicht:
Delphi-Quellcode:
You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'from
(select concat(a.oaagbz,
' HN.',Right(p.stkomp,3),' ', t.azabme) as Bezeich' at line 2
Patrick
  Mit Zitat antworten Zitat
hoika

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

AW: Update mit Werten aus der gleichen Tabelle und anderen Tabellen

  Alt 29. Jul 2019, 17:47
Hallo,
läuft denn das Select alleine?

as t
where b.waaunr=t.waaunr and b.waaupo=t.waaupo and b.oaagnr=t.oaagnr

Ich denke, dass geht nicht.
Heiko
  Mit Zitat antworten Zitat
Delphi.Narium

Registriert seit: 27. Nov 2017
2.415 Beiträge
 
Delphi 7 Professional
 
#5

AW: Update mit Werten aus der gleichen Tabelle und anderen Tabellen

  Alt 30. Jul 2019, 06:34
Da was brauchbares bei? https://stackoverflow.com/questions/...n-select-query
  Mit Zitat antworten Zitat
Ykcim

Registriert seit: 29. Dez 2006
Ort: NRW
804 Beiträge
 
Delphi 10.4 Sydney
 
#6

AW: Update mit Werten aus der gleichen Tabelle und anderen Tabellen

  Alt 30. Jul 2019, 08:52
Vielen Dank für die Hilfe!

Ich habe die Query jetzt so aufgebaut:
Delphi-Quellcode:
UPDATE
    `table1` AS `dest`,
    (
        SELECT
            *
        FROM
            `table2`
        WHERE
            `id` = x
    ) AS `src`
SET
    `dest`.`col1` = `src`.`col1`
WHERE
    `dest`.`id` = x
;
So hat es jetzt funktioniert:
Delphi-Quellcode:
update as400 as b,
  (select a.waaunr, a.waaupo, a.oaagnr, concat(a.oaagbz,' ', t.tebez1) as Bezeichnung from as400 a
      left join phstru p on p.stbgnr=a.watenr and p.tamagr=3500
      left join teilestamm t on t.aztenr=p.stkomp
   where a.oamanr like 'SU%'
   and t.temagr=3500
   and p.tamagr=3500) as t
set b.oaagbz=t.Bezeichnung
where b.waaunr=t.waaunr and b.waaupo=t.waaupo and b.oaagnr=t.oaagnr
Vielen Dank
Patrick
Patrick
  Mit Zitat antworten Zitat
Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Ansicht

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 19:43 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