私はこれを2夜にわたって理解しようとしましたが、できません。3 つのテーブル (person、person_pet、pet) を使用して値を更新しようとしています。ペットの親は、ペットを所有している人でなければなりません。pet.id と person_pet.pet_id のみを使用して、1 対 1 の一致を得ようとしています。person_pet は、どのペットがどの人物に属しているかを示す関係テーブルです。私が見つけた最も近い答えはここでした(3つのテーブルを結合してSQLを更新する)。
これが私のベストショットです:
UPDATE pet
SET parent =
(SELECT person.id
FROM person, person_pet, pet
WHERE
person_pet.pet_id = pet.id);
正しい方向に私を向けるのを手伝ってください、ありがとう!
これが私が使用してきた正確なテーブルです。
人
+----+------------+-----------+------+------+--------------+--------+------+
| id | first_name | last_name | age | dead | phone_number | salary | dob |
+----+------------+-----------+------+------+--------------+--------+------+
| 0 | Zed | Shaw | 37 | NULL | NULL | NULL | NULL |
| 1 | Terry | Berry | 42 | NULL | NULL | NULL | NULL |
| 2 | Tyler | Brown | 25 | NULL | NULL | NULL | NULL |
| 3 | Frank | Smith | 100 | NULL | NULL | NULL | NULL |
ペット
+----+----------+------------+------+------+------+--------+
| id | name | breed | age | dead | dob | parent |
+----+----------+------------+------+------+------+--------+
| 0 | Zeds Pet | Unicorn | 1000 | 0 | NULL | NULL |
| 1 | Zeds Pet | Robot | 1 | 0 | NULL | NULL |
| 2 | Murphy | Yellow lab | 6 | 0 | NULL | NULL |
+----+----------+------------+------+------+------+--------+
person_pet
+-----------+--------+--------------+
| person_id | pet_id | purchased_on |
+-----------+--------+--------------+
| 0 | 0 | 0000-00-00 |
| 0 | 1 | 0000-00-00 |
| 2 | 2 | 0000-00-00 |
| 4 | 3 | 0000-00-00 |
| 5 | 4 | 0000-00-00 |
| 6 | 5 | 0000-00-00 |
| 7 | 6 | 0000-00-00 |
| 5 | 7 | 0000-00-00 |
+-----------+--------+--------------+