Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   Delphi warum funktioniert dieses update nicht? (https://www.delphipraxis.net/101381-warum-funktioniert-dieses-update-nicht.html)

webcss 12. Okt 2007 07:59

Datenbank: Firebird • Version: 2.0.3 • Zugriff über: ibexpert

warum funktioniert dieses update nicht?
 
moin DPler,

folgendes update liefert nicht das gewünschte ergebnis:
SQL-Code:
update adressen set
KundenRef = (select kunden.Id from kunden where kunden.adresseRef = adressen.ID)
und ich raff's net wieso?

HILFE!

DeddyH 12. Okt 2007 08:01

Re: warum funktioniert dieses update nicht?
 
Und so?
SQL-Code:
update adressen set
KundenRef = (select kunden.Id from kunden,adressen where kunden.adresseRef = adressen.ID)

mkinzler 12. Okt 2007 08:04

Re: warum funktioniert dieses update nicht?
 
Oder
SQL-Code:
update adressen a set
KundenRef = (select kunden.Id from kunden where kunden.adresseRef = a.ID)

webcss 12. Okt 2007 08:11

Re: warum funktioniert dieses update nicht?
 
Zitat:

Zitat von DeddyH
Und so?
SQL-Code:
update adressen set
KundenRef = (select kunden.Id from kunden,adressen where kunden.adresseRef = adressen.ID)

multiple rows in singleton select :(

Zitat:

Zitat von mkinzler
update adressen a set
KundenRef = (select kunden.Id from kunden where kunden.adresseRef = a.ID)

das ist dasselbe was ich mache, zumindest im ergebnis...

DeddyH 12. Okt 2007 08:19

Re: warum funktioniert dieses update nicht?
 
Noch ein Versuch aus dem Kopf:
SQL-Code:
UPDATE Adressen A
SET KundenRef =
(SELECT kunden.Id FROM kunden
 JOIN Adressen B ON B.adressenId = kunden.adresseRef)
WHERE A.Id = B.Id

mirage228 12. Okt 2007 08:20

Re: warum funktioniert dieses update nicht?
 
Zitat:

Zitat von webcss
Zitat:

Zitat von DeddyH
Und so?
SQL-Code:
update adressen set
KundenRef = (select kunden.Id from kunden,adressen where kunden.adresseRef = adressen.ID)

multiple rows in singleton select :(

Hört sich zumindest so an, als ob das Sub-Select mehrere Ergebnisse liefert, wo nur eines erlaubt wäre.
Was ist wenn du ein "LIMIT 1" in die Select-Anweisung reinschreibst?

mfG
mirage228

DeddyH 12. Okt 2007 08:21

Re: warum funktioniert dieses update nicht?
 
Firebird kennt kein "LIMIT" (leider weiß ich jetzt nicht aus dem Kopf, wie dort die Entsprechung lautet).

mkinzler 12. Okt 2007 08:29

Re: warum funktioniert dieses update nicht?
 
Zitat:

Firebird kennt kein "LIMIT" (leider weiß ich jetzt nicht aus dem Kopf, wie dort die Entsprechung lautet).
SQL-Code:
select first 1 ...
bzw. Interbase Syntax
SQL-Code:
select ... rows 1
oder halt mit distinct

DeddyH 12. Okt 2007 08:30

Re: warum funktioniert dieses update nicht?
 
Thx, wieder was gelernt.

webcss 12. Okt 2007 08:45

Re: warum funktioniert dieses update nicht?
 
Zitat:

Zitat von DeddyH
Noch ein Versuch aus dem Kopf:
SQL-Code:
UPDATE Adressen A
SET KundenRef =
(SELECT kunden.Id FROM kunden
 JOIN Adressen B ON B.adressenId = kunden.adresseRef)
WHERE A.Id = B.Id

geht nicht da man sich in einem "äußeren" where-clause auf spalten eines SubSelects beziehen kann. Trotzdem Danke.


Alle Zeitangaben in WEZ +1. Es ist jetzt 10:27 Uhr.
Seite 1 von 2  1 2      

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-2025 by Thomas Breitkreuz