Das Notes Forum

Sonstiges => Offtopic => Thema gestartet von: Steffen_Albrecht am 24.11.03 - 09:47:02

Titel: eine klevere SQL
Beitrag von: Steffen_Albrecht am 24.11.03 - 09:47:02
Hallo,

ich habe mal ne Frage zu einer SQL, die ich aus einem Script heraus ausführen möchte:

Ich habe insgesamt 3 Tabellen (auf Firebird).
hh_users:         ID     Ident      Name      Vorname
dd_delittime:    ID     Ident      Name
hh_link:            IDu    IDd

Die Tabellen hh_users und hh_delittime sind über dei Tabelle hh_link mit einander verknüpft.
jetzt soll aber hh_delittime.Name gleich hh_users.Vorname gesetzt werden. Aber nur überall da, wo die Datensätze mit einander verknüpft sind.

Hat evtl. jemand eine Idee wie da die SQL aussehen muss?

Danke & Gruß
      Steffen



Titel: Re:eine klevere SQL
Beitrag von: smokyly am 24.11.03 - 12:36:14
Meinst Du in etwa das hier:

update dd_delittime a set a.name=(select b.vorname from hh_users b,hh_link c
where c.idu=b.id and c.idd=a.id)
where a.id=(select a.id from hh_users b,hh_link c
where c.idu=b.id and c.idd=a.id)

Getestet unter Oracle 8, ohne Performance-Optimierung und unter Annahme vom Eindeutigkeiten und auch nur auf die Schnelle aus dem Fingern gesaugt......

Gruß
Geri
Titel: Re:eine klevere SQL
Beitrag von: Steffen_Albrecht am 24.11.03 - 14:56:53
Super!
Genau sowas hab ich gemeint!
Danke!  :D
Titel: Re:eine klevere SQL
Beitrag von: smokyly am 24.11.03 - 15:07:24
Das war's? Cool, das war einfach ;)
Und wenn die Indexe richtig gesetzt sind, sollte das bei einem größeren Datenumfang trotz des seltsamen Codes performant laufen (ohne Gewähr, hatte nur 10 Testdaten zur Hand).

Jo denn, viel Erfolg noch.

Nachtrag:

Uuups, nicht ganz, er macht einen Full Table Access auf die DD_DELITTIME (trotz Index auf Feld "ID" und entsprechenden anderen Indexes) - das nicht gut, wenn die Datenmenge sehr groß ist..
Jo mei, man kann nicht alles haben :( ???