1

次の sqlite ステートメントに正しい qoutes を配置すると問題が発生します。これは、顧客テーブルの主キーである顧客 id(c_id) をプレース テーブルの外部キー c_id に配置します。

コードのネストを解除し、「select c_id from customers where fname =?」の部分を個別に実行することで、c_id を抽出できました。しかし、コードをもっと簡潔にしたいのです。

t = (fname,)
place = (postal_code , place_name)
cur.execute(""insert into place(postal_code ,place_name,c_id) values(?,?,("select c_id from customers where fname =?"),t)""",place)

引用符はすべて場違いです。修正のために助けていただければ幸いです。

ところで:この質問は、この質問Insert Data Into Tables Linked by Foreign Keyの同様の複製であり、そこからネストのアイデアをコピーしました。

4

2 に答える 2

0

この問題の解決策は、適切な量の引用を入れることではなく、sqlite ステートメントの形式にあります。

1 つの解決策は、変数 place を 3 つの値で設計することです。そのうちの 1 つは、顧客 ID(c_id) の外部キーを使用します。

place = (postal_code , place , f_name) 

cur.execute("insert into place(postal_code ,place,f_name) values(?,?,(select c_id from customers where fname =?))",place)
于 2012-11-01T04:45:08.487 に答える
0

ここでは完全に推測していますが、試してみましたか。

cur.execute("insert into place(postal_code ,place_name,c_id) values(?,?,(select c_id from customers where fname = ?))", (postal_code , place_name, fname))

編集 この質問を参照... 値に挿入 ( SELECT ... FROM ... )

INSERT INTO TableA (colA, colB, colC) SELECT ?, ?, (SELECT c_id FROM customers WHERE fname = ?)
于 2012-11-01T04:10:07.530 に答える