2012-11-06 30 views
15

ちょっと、関係のない2つのテーブルを結ぶジャンクションテーブルがあります。どちらのテーブルもIDを持っています。私は、異なる値を持つWHEREを使用して各テーブルからIDを選択する必要があります。たとえば、これはどのように表示されるかです。INSERT INTO複数テーブルのテーブル

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

私が参加文を使用し見てきましたが、2つのテーブルが一致していない、この場合には、共通の値を持つすべての例。

+0

あなたはSELECT 'てみました... INTO'することができますか? – Raptor

答えて

36

は、以下試してみてください。

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

クールな病気ではありますが、なぜ "FROM TableA"から "ただ"から " – ThingWings

+0

@Kosmo:私はあなたのテーブルテーブルがわからなかったので、私はTableAとして擬似テーブル名を使用し、 'エイリアス' a。あなたのテーブルが 'A、B&C'なら' INSERT INTO C ... FROM A、B ... 'として使います。私は答えを更新しました。 –

+1

あなたは他のIDとは異なるIDを見つけようとしていますか?彼らが関係していない場合、あなたはそれらをどのように関連付けることができますか?今のところ挿入コンポーネントについては忘れて、必要なデータを返すSELECTステートメントを取得してください。上記の答えはあなたにデータのクロス結合を与えるでしょう。すなわち、Aに30の「Me」レコードがあり、Bに50の「数学」レコードがあると、その結果として1,500レコードが得られます。いくつのレコードが得られると思いますか、テーブル間でどのように関連付ける必要がありますか? –

1

をもう一つの方法は、

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'; 
関連する問題