AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Update mit Join ?

Ein Thema von Gruber_Hans_12345 · begonnen am 17. Feb 2005 · letzter Beitrag vom 17. Feb 2005
Antwort Antwort
Gruber_Hans_12345

Registriert seit: 14. Aug 2004
1.426 Beiträge
 
Delphi 2007 Professional
 
#1

Update mit Join ?

  Alt 17. Feb 2005, 13:58
Datenbank: Firebird • Zugriff über: -
Gibt es eigentlich soetwas

SQL-Code:
UPDATE POSITION P SET P.LEVEL = T.LEVEL
INNER JOIN TRANSAKTION T ON T.PARENTID = P.ID
WHERE T.TYP = 9
POSITION
ID LEVEL
1 <ignorieren>
2 3
3 <ignorieren>
4 <ignorieren>
5 <ignorieren>
6 3

TRANSAKTION
PARENTID LEVEL TYP
2 3 9
5 3 3
6 3 9
Gruss Hans

2B or not 2B, that is FF
  Mit Zitat antworten Zitat
shmia

Registriert seit: 2. Mär 2004
5.508 Beiträge
 
Delphi 5 Professional
 
#2

Re: Update mit Join ?

  Alt 17. Feb 2005, 14:15
Das geht mit UPDATE....FROM
Es ist klar, dass immer nur eine Tabelle upgedatet werden kann.
Die Daten können aber aus einer Abfrage selektiert werden:
SQL-Code:
UPDATE POSITION SET LEVEL = T.LEVEL
FROM POSITION P INNER JOIN TRANSAKTION T ON T.PARENTID = P.ID
WHERE T.TYP = 9
Andreas
  Mit Zitat antworten Zitat
Gruber_Hans_12345

Registriert seit: 14. Aug 2004
1.426 Beiträge
 
Delphi 2007 Professional
 
#3

Re: Update mit Join ?

  Alt 17. Feb 2005, 14:43
Kann es sein, das Firebird das UPDATE .... FROM nicht kann ?
schreibt mir das es FROM nicht kennt.
Gruss Hans

2B or not 2B, that is FF
  Mit Zitat antworten Zitat
DelphiDeveloper

Registriert seit: 9. Apr 2003
Ort: Köln
256 Beiträge
 
Delphi XE2 Enterprise
 
#4

Re: Update mit Join ?

  Alt 17. Feb 2005, 16:52
Abgesehen von den unschoenen bezeichnern

position + level sind schluesselworte
und eine Tabelle Transaktion zu nennen ist wohl auch ein bisserl verwirrend.

Nun ja zu deinem Problem:

Die Abfrage ist wie oben angegeben synt. nicht korrekt.
es muss wohl eher sowas sein:


Delphi-Quellcode:
UPDATE "POSITION" P1 SET P1."LEVEL" =
(SELECT min(T."LEVEL")
 FROM "POSITION" P
 INNER JOIN TRANSAKTION T ON T.PARENTID = P.ID
WHERE T.TYP = 9 )
  Mit Zitat antworten Zitat
Gruber_Hans_12345

Registriert seit: 14. Aug 2004
1.426 Beiträge
 
Delphi 2007 Professional
 
#5

Re: Update mit Join ?

  Alt 17. Feb 2005, 17:47
Zitat von DelphiDeveloper:
Abgesehen von den unschoenen bezeichnern

position + level sind schluesselworte
und eine Tabelle Transaktion zu nennen ist wohl auch ein bisserl verwirrend.
War nur ein vereinfachtes Beispiel, daher vielleicht etwas schlecht gewählt. (In meiner DB heißen die dann eh TREE_LEVEL, FLT_TRANSACTION, TEIL_POSITION ...)


Zitat von DelphiDeveloper:
Nun ja zu deinem Problem:

Die Abfrage ist wie oben angegeben synt. nicht korrekt.
es muss wohl eher sowas sein:


Delphi-Quellcode:
UPDATE "POSITION" P1 SET P1."LEVEL" =
(SELECT min(T."LEVEL")
 FROM "POSITION" P
 INNER JOIN TRANSAKTION T ON T.PARENTID = P.ID
WHERE T.TYP = 9 )
Diese Abfrage kenn ich, aber ich habe das Problem, das ich meherer Felder setzen muß und dann in einer UPDATE 4 SELECT einzubauen, wobei alle dann denn selben Filter haben, naja sieht einfach sehr unprofessionell aus (funktioniert aber sieht unprofessionell)
Daher wollte ich fragen, ob ein schönerer Weg dafüt existiert.
Gruss Hans

2B or not 2B, that is FF
  Mit Zitat antworten Zitat
Antwort Antwort


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 05:28 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