2

私は3つのテーブルを持っています:

tblNames:

|  id  |   firstname   |   lastname   |
+------+---------------+--------------+
|  1   |   John        |   Smith      |

tblJosbs(このテーブルは同時に複数のチェックボックスの値を受け入れます):

|  id  |   jobs                |
+------+-----------------------+
|  1   |   Nurse               |
+------+-----------------------+
|  2   |   Call Center Agent   |
+------+-----------------------+
|  3   |   Police              |

tblNamesJobs(このテーブルはJOIN他の 2 つのテーブルに使用されます):

|  id  |   name_id   |   jobs_id   |
+------+-------------+-------------+
|  1   |   1         |   1         |
+------+-------------+-------------+
|  2   |   1         |   2         |
+------+-------------+-------------+
|  3   |   1         |   3         |

INSERTすべて問題ありませんが、新しい情報を追加するときに使用する必要がある 3 番目の表のステートメントを誰かに見せてもらえますか?

4

3 に答える 3

2

たとえば、John Smithコール センター エージェントであるというレコードを追加します。

insert into tblNamesJobs (name_id,jobs_id )
values (
         select id from tblNames where 
                firstname='John' 
                and lastname='Smith' limit 1
         ,
         select id from tblJosbs where jobs='Call Center Agent' limit 1
        );
于 2012-12-29T07:29:14.870 に答える
0
INSERT INTO tblNamesJobs (name_id, jobs_id) VALUES (XXXX,YYYY)

これは、テーブルの ID が自動インクリメントであると想定しています。

「joiner」テーブルの name_id 列と jobs_id 列の両方が、他のテーブルのそれぞれの列への外部キーである必要があることに注意してください。

編集 - Valex の回答では、id 値がまだない場合の対処方法について詳しく説明しています。

可能であれば、「ジョイナー」テーブルを処理する何らかのフレームワークを使用することをお勧めします。

于 2012-12-29T07:24:51.903 に答える
0

すでに tauto インクリメントに依存している場合は、アダプターに応じて lastinserid を取得できます。例えば。mysql_insert_id

PDO の場合は、 -- PDO::lastInsertId を使用できます。

そのため、以前に挿入されたテーブルの ID を取得し、新しいテーブルに保存できます。

于 2012-12-29T07:30:41.880 に答える