2016-07-03 35 views
1

3つ目のテーブルに挿入する際に2つの異なるテーブルから2つの値を挿入する際に問題があります。2つの異なるテーブルの2つの値を1つのテーブルに挿入します。

最初の表は次のとおり

  • AUTHOR_ID(PK)
  • AUTHOR_NAME
  • AUTHOR_EMAIL

二番目の表は次のとおり

  • CATEGORY_ID(PK)
  • CATEGORY_NAME

第三の表は、次のとおりです。

  • がpost_idの
  • post_category
  • post_author
  • POST_TITLE
  • POST_CONTENT
  • post_date

と私はauthor_name最初のテーブルからcategory_name 3番目のテーブルにデータを挿入中に2番目のテーブルから取得します。

私はこれに似たものを手に入れましたが、うまく機能しません。

INSERT INTO posts (post_category, post_author, post_title, post_content) 
    SELECT 
     category_name 
    FROM 
     categories 
    WHERE 
     category_name='python', 
    SELECT 
     author_name 
    FROM 
     authors 
    WHERE 
     author_name = 'm0jito', 
    'Lorem Ipsum', 
    'Lorem Ipsum Lorem Ipsum Lorem Ipsum Lorem Ipsum ') 

お手数をお待ちしております。

答えて

1

@の鷺のソリューションに加えて、あなたはINSERT VALUESにスカラサブクエリを使用することができるはずです。

INSERT INTO posts (post_category, post_author, post_title, post_content) 
VALUES 
    (
    (SELECT 
     category_name 
    FROM 
     categories 
    WHERE 
     category_name='python'), 
    (SELECT 
     author_name 
    FROM 
     authors 
    WHERE 
     author_name = 'm0jito'), 
    'Lorem Ipsum', 
    'Lorem Ipsum Lorem Ipsum Lorem Ipsum Lorem Ipsum ' 
) 

category_nameまたはauthor_nameが一意でない場合、これは失敗します。

はところで、あなたはおそらく、現在のSELECTが全く必要とされていないため、カテゴリ/著者IDの代わり名前を返すようにしたいです。しかし、私はこれがほんの一例だと考えています。

+0

これは、ありがとうございます! :) – n3stis

1

あなたが一緒にこれらのテーブルを結合する必要があります。

INSERT INTO posts (post_category, post_author, post_title, post_content) 
SELECT c.category_name,a.author_name,'Lorem Ipsum','Lorem Ipsum Lorem Ipsum Lorem Ipsum Lorem Ipsum' 
FROM categories c 
CROSS JOIN authors a 
WHERE c.category_name = 'python' 
    AND a.author_name = 'm0jito' 

関係列のいくつかの並べ替えがある場合は、変更を(少し怪しい)これら2つのテーブル間の任意の関係を提供しなかったので、私はCROSS JOINを使用それはINNER JOINになり、ON()句を使用します。

+0

回答ありがとうございました:) – n3stis

関連する問題