この3つのテーブルがあり、特定のアドレスに新しいイベントを挿入したいのですが、その方法はわかりません。SQLクエリ:2つのテーブルを組み合わせて別のテーブルにデータを挿入する
account(id, email, password)
address(id, city, street, number, c_id(foreign key for account))
event(id, title, description, e_id(foreign key for address))
ユーザーは、自分のアドレスにイベントを登録できます。私は何をしようとしているベロー。 uはイベント表の外部キーとして追加することができるようにあなたは、街の主キーにすることができ、アドレステーブルで
/*I don't know how to combine those lines above.*/
INSERT INTO public.event(id, title, description, c_id, e_id) VALUES ('1', 'event title', 'event description', '????')
どのDBMS?ほとんどの場合、INSERT ... SELECTの組み合わせ構文、またはそれに類するものがサポートされています。 2つの選択クエリを内部結合で1つにマージすることができます(アドレステーブルの複数の行を返さないようにする必要があります。これは、関連するユーザーアカウントに一致する行を返すだけなので、アドレス?)。 – ADyson
私はPosgreSqlを使用しています。まだ助けを待っている。 –
https://www.postgresql.org/docs/9.1/static/sql-insert.htmlは、基本的な考え方を示しています。「INSERT INTOフィルムのSELECT * FROM tmp_films where date_prod <'2004-05-07';」を参照してください。明らかにフィールドに置き換える必要がありますが、挿入操作と選択操作を1つにまとめることができます。また、2つのselect文を1つにまとめるだけで済みます(これは内部結合を使用して行うことができます)。 – ADyson