2010-04-21 12 views
7

Ho bisogno di trovare un modo per fare un INSERT INTO table A ma uno dei valori è qualcosa che proviene da una ricerca sulla tabella B, permettetemi di illustrare.Come inserire un valore basato sulla ricerca da un'altra tabella?

Ho le seguenti 2 tabelle:

Tabella A:

A1: String 
A2: Integer value coming from table B 
A3: More Data 

Tabella B:

B1: String 
B2: Integer Value 

Esempio riga di A: { "Qualità", 101 , MoreData} Esempio di riga di B: {"inglese", 101}

Ora, so che ho bisogno di INSERIRE quanto segue in A {"Value2", "English", MoreData} ma ovviamente non funzionerà perché si aspetta un intero nella seconda colonna non la parola "inglese", quindi devo prima fare una ricerca nella Tabella B.

Qualcosa di simile a questo:

INSERT INTO tableA (A1, A2, A3) 
VALUES ("Value2", SELECT B2 FROM tableB where B1="English", MoreData); 

Ovviamente questo non funziona così com'è ...

Qualche suggerimento?

risposta

6

come circa:

Insert into tableA (a1,a2,a3) 
(select "value2", b2, moreData from TableB where B1 = "English") 
+0

non sembra funzionare ... si lamenta di sintassi in prossimità SELEZIONARE. Se questo è l'approccio standard, allora devo avere un refuso da qualche parte (esaminandolo ora). Ma, un mio amico mi ha appena detto quanto segue "In una clausola VALUES, puoi solo specificare variabili o costanti". Presumo che abbia torto (deve esserci un modo) – Shaitan00

+0

Forse è la parentesi attorno alla parte "seleziona ..."? Soprattutto in SQL Server non sono necessari lì e forse anche illegali. Non so su altri prodotti server, però. –

1

Sembra essere più cross-DBMS senza parentesi, come @Andriy M ha commentato:

insert into tableA (a1, a2, a3) 
select 'value2', b2, moreData from tableB where B1='English' 
Problemi correlati