2012-11-06 13 views
15

Hey, quindi ho una tabella di giunzione che collega due tabelle non correlate. Entrambe le tabelle hanno ID. Devo selezionare l'ID da ogni tabella usando WHERE con valori diversi, per esempio questo è come lo vedo io.INSERISCI IN Tabella da più tabelle

INSERT INTO c (aID, bID) 
VALUES (SELECT a.ID WHERE a.Name="Me", SELECT b.ID WHERE b.Class="Math"); 

Tutti gli esempi che ho visto usano un'istruzione join ma le due tabelle hanno un valore comune, in questo caso non lo fanno.

+0

Hai provato 'SELECT ... INTO'? – Raptor

risposta

36

Prova di seguito:

 INSERT INTO c (aID, bID) 
    SELECT a.ID, B.ID 
    FROM A, B 
    WHERE A.Name='Me' 
    AND B.Class='Math'; 
+0

cool mal provatelo, ma perché "FROM TableA a" why not just "FROM a" – ThingWings

+0

@Kosmo: non sapevo che 'A' è la vostra tabella, quindi ho usato un nome di tabella psuedo come TableA e riferito TableA usando 'alias' a. Se i tuoi tavoli sono 'A, B & C', usa 'INSERT INTO C ... FROM A, B ...'. Ho aggiornato la risposta. –

+1

stai cercando di trovare gli ID in uno che non sono nell'altro? se non sono imparentati come puoi metterli in relazione? Dimentica il componente di inserimento per ora, prendi semplicemente un'istruzione SELECT che restituisce i dati che desideri. La risposta sopra ti darà una croce di dati. Ad esempio, se ci sono 30 record "Me" in A e 50 record "Matematica" in B otterrete 1.500 record risultanti da quello. Quanti dischi ti aspetti di ottenere e come dovrebbero essere correlati tra le tabelle? –

1

Un altro modo può essere

INSERT INTO c (aID, bID) 
SELECT 
    (SELECT A.id FROM TableA A WHERE A.names = 'sometext'), 
    B.id FROM TableB B 
WHERE 
    B.x_name ='othertext'; 
Problemi correlati