2012-10-29 17 views
6

テーブル(item1)にテーブル(item2)の値を挿入し、そのitem2テーブルにない日付を挿入したいとします。select文を使用してSQL文を挿入する

これを達成するためにselect文を使用してSQL挿入を文に書き込むにはどうすればよいですか?

例:

INSERT into item1(date, name, qty) 
values(datevalue, select col1, col2 from item2); 

これが機能していません。それを修正するために私は何をすべきですか?

insert into daily_stock(date, product_id, name, weight, qty, free_issues, sales_price, 
         purchased_price, category, last_purchased_date) 

    select 
     **'"+today+"'**, 
     productId, name, weight, newQty, freeIssues, NewSalesPrice, 
     NewPurchasePrice, category, datePurchased 
    from product 

私はjavaを使用していますが、今日は文字列変数ですが、データは挿入されていません、何が間違っていますか?

+0

http://stackoverflow.com/questions/224732/sql-update-from-one-table-to-another-based-on-a-id-match –

答えて

7

あなたはほとんどそこにいる:ちょうどVALUESINSERT instreadためSELECTバリエーションを使用し、定数としてそこにあなたのデータを含める:

insert into item1(date,name,qty) 
select <datevalue>, col1, col2 from item2; 

あなたの日付は、別のテーブルから来ている場合は、あなたがこれを行うことができます:

insert into item1(date,name,qty) 
select d.dcol1, i2.col1, i2.col2 
from item2 i2 inner join table_containing_date_col d 
on <some join criteria> 

EDIT:あなたはデータ型が一致する、すなわち、あなたはあなたが日付フィールドにそれsavignている場合は、日付に解析可能であることを持っていることを確認する必要がある(これを使用、うまくいけば!)。あなたは、データベースの詳細を与えることはありませんが、それはSQL Serverの

cast('your date in yyyymmdd format' as datetime) 

のためにこのようなものになるだろう(それが認識可能なISO形式であるとしてyyyymmddが常に動作します)

またはより良いまだCONVERT

のためにあなたはSTR_TO_DATE、Oracleの場合はTO_DATEなどです。 、T-SQLでこれがそうのように行うことができ、使用しているSQLサーバー/タイプが存在しない場合には

+0

おかしい...私は決して今まで* *すべてのデータベースのデフォルトの結合タイプであり、誰もがそれを知っているので、キーワード 'inner'をコーディングします。 – Bohemian

1

使用INSERT INTO...SELECT声明

INSERT INTO item1 (date, name, qty) 
SELECT 'value here' as datevalue, col1, col2 
FROM item2 
0

に:

INSERT INTO Table1 
SELECT '29/01/2012', T2.Column1, T2.Column2 FROM Table2 T2 
0

あなたが近くにあります。

INSERT into ITEM1 (date, name, qty) 
values (datevalue, (SELECT col1, col2 FROM item2)); 
関連する問題