Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   SQL Insert mit Select (https://www.delphipraxis.net/161501-sql-insert-mit-select.html)

ibp 6. Jul 2011 13:39

Datenbank: Interbase • Version: 6.5 • Zugriff über: ibexpert

SQL Insert mit Select
 
Hi,

warum schlägt nachfolgendes fehl, er mag den select in den Values nicht?

Meldung: Invalid token. (Select)

Code:
insert into tabelle
(fqld1,feld2,feld3)
values
(select xxx from tabellexxx where yyy=aaa, 'ksdhf', 34343)
Welche Möglichkeit gibt es noch?

Danke schon mal...

DeddyH 6. Jul 2011 13:40

AW: SQL Insert mit Select
 
Lass das "Values" einfach weg.
SQL-Code:
INSERT INTO
  Tabelle(Feld1, Feld2, Feld3)
SELECT
  Feld1, Feld2, Feld3
FROM
  Andere_Tabelle
WHERE
  Bedingungen

ibp 6. Jul 2011 13:51

AW: SQL Insert mit Select
 
@DeddyH
fast, nur das aus dem select nur 1 Feld kommt.

Habe es nun so gelöst, indem ich in das select die anderen Werte ('ksdhf', 34343) injizieren....

Code:
insert into tabelle
(fqld1,feld2,feld3)
select xxx, 'ksdhf', 34343 from tabellexxx where yyy=aaa

DeddyH 6. Jul 2011 14:01

AW: SQL Insert mit Select
 
Oh sry, das hatte ich wohl nicht richtig gelesen. Eine andere Möglichkeit wäre IIRC gewesen:
SQL-Code:
INSERT INTO
  Tabelle(feld1,feld2,feld3)
VALUES
  ((SELECT xxx FROM Tabellexxx WHERE yyy=aaa), 'ksdhf', 34343)
Also, das innere Statement zusätzlich zu klammern.

[edit] Allerdings gibt es einen Unterschied zwischen diesen beiden Varianten: wenn das SELECT mehrere Datensätze zurückgibt, legt Deine Variante auch entsprechend viele Datensätze an, während diese hier einen Fehler wirft. Was nun besser geeignet ist, hängt also vom konkreten Fall ab. [/edit]

ibp 6. Jul 2011 14:29

AW: SQL Insert mit Select
 
Zitat:

Zitat von DeddyH (Beitrag 1110307)
Also, das innere Statement zusätzlich zu klammern.

:wall:

Jumpy 6. Jul 2011 15:31

AW: SQL Insert mit Select
 
Wenn man nur einen Wert in die Tabelle schreiben will, muss man dann nicht einfach auch nur ein Feld angeben?

Insert Into Tabelle1(Feld1)
Select EinFeld From Tabelle2

DeddyH 6. Jul 2011 15:34

AW: SQL Insert mit Select
 
Sicher, sonst gibt das böse Fehlermeldungen. Der TE wollte aber 3 Felder befüllen, von denen wohl 2 Konstanten sind.

Jumpy 6. Jul 2011 15:55

AW: SQL Insert mit Select
 
Ahrg:wall: Ich hab das in dem ersten Post nicht gerafft, dass das Absicht war mit den Konstanten. Ich dachte das wär der Workarround.

omata 6. Jul 2011 22:01

AW: SQL Insert mit Select
 
SQL-Code:
INSERT INTO tabelle (fqld1, feld2, feld3)
SELECT xxx, 'ksdhf', 34343
FROM tabellexxx
WHERE yyy = aaa

DeddyH 7. Jul 2011 07:06

AW: SQL Insert mit Select
 
So steht es ja auch in #3.


Alle Zeitangaben in WEZ +1. Es ist jetzt 08:57 Uhr.

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