【追記】すみません、何も考えないでぺろっと書いてしまいましたがこれ SQL Server の書き方でした!
Oracle とか他の DB だと書き方違うかも(or できないかも)です(未調査)。すみまっせん・・・!
(SQL Laravel はわからないのですが、普通に SQL の質問として回答します)
ええと、整理しますが
■tableA と tableB は、「large_genre_id」で紐付いているのでしょうか。
■それで、Aテーブルの、その large_genre_id を書き換えるのですか。
SQL
1-- Aテーブル 作成
2CREATE TABLE TEST_tableA (
3 id Integer,
4 genre_id Integer,
5 large_genre_id Integer,
6
7 -- PK
8 CONSTRAINT [PK_TEST_tableA] PRIMARY KEY CLUSTERED
9 (
10 id ASC
11 )WITH (STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF)
12)
13GO
14
15-- Bテーブル 作成
16CREATE TABLE TEST_tableB (
17 id Integer,
18 large_genre_id Integer,
19
20 -- PK
21 CONSTRAINT [PK_TEST_tableB] PRIMARY KEY CLUSTERED
22 (
23 id ASC
24 )WITH (STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF)
25)
26GO
SQL
1-- テストデータ 準備
2DELETE FROM TEST_tableA;
3DELETE FROM TEST_tableB;
4
5INSERT INTO TEST_tableA VALUES(1, 1, 4);
6INSERT INTO TEST_tableA VALUES(2, 1, 5);
7
8INSERT INTO TEST_tableB VALUES(88, 4);
9INSERT INTO TEST_tableB VALUES(99, 6);
SQL
1SELECT * FROM TEST_tableA;
2SELECT * FROM TEST_tableB;
3
4/*
5
6-- 更新
7UPDATE TEST_tableA SET
8 large_genre_id = bbb.id
9FROM TEST_tableA aaa
10INNER JOIN TEST_tableB bbb ON (bbb.large_genre_id = aaa.large_genre_id)
11
12*/
tableA の 1|1|4 → 1|1|88 に更新される。2|1|5 は変更なし。
合ってるかな・・・ どうかな・・・ ちょっとテストしてみてください。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。