我有2张桌子
表电影
- id(PK)
- 标题
- 类型
表剧集
- id(PK)
- 剧集(PK)
- 标题
每部电影都有一些剧集
的动画
---------------------------------
| id | title | type |
|----|-------------|------------|
| 1 | movie1 | 3 episodes |
| 2 | movie2 | 2 episodes |
---------------------------------
的集
----------------------------------------
| id | episode | title |
|----|-------------|-------------------|
| 1 | 1 | movie1 episode 1 |
| 1 | 2 | movie1 episode 2 |
| 1 | 3 | movie1 episode 3 |
| 2 | 1 | movie2 episode 1 |
| 2 | 2 | movie2 episode 2 |
----------------------------------------
如果我更新记录id =“1”(在两个表上),我经常使用:
表电影:
Update Movie set title='...', type='...' where id=1;
表剧集
Delete from Episode where id=1;
Insert into Episode(id, episode, title) values('...', '...', '...');
我认为更新Table Episode是一种愚蠢的方式。我只是想不到另一种更新记录的方法,考虑用户可以更改,添加或删除表上的某些记录,然后将所有更改保存到数据库。
任何人都有其他解决方案吗?
修改
离。
用户在Table Episode上做了一些更改(只是id = 1)
的集
----------------------------------------
| id | episode | title |
|----|-------------|-------------------|
| 1 | 1 | movie1 episode 1 |
| 1 | 2 | movie1 episode 1a |
| 1 | 3 | movie1 episode 2 |
| 1 | 4 | movie1 episode 3a |
| 1 | 5 | movie1 episode 3b |
----------------------------------------
如何将所有更改存储到数据库?
答案 0 :(得分:0)
我认为此查询可以解决您的问题:
update Movie m inner join Episode e on m.id = e.id and m.id = 1 set m.title = 'your_value', e.title = 'your value'
DB:MYSQL 5.5
答案 1 :(得分:0)
我建议稍微改变你的表结构,然后你不需要所有的更新。
即。可以通过在剧集(按电影ID)上执行SELECT COUNT(*)来计算Movie.Type。我不明白为什么你需要存储Movie.Type,并且Episode.Title也可以计算,你只需要在Episode表中存储Episode Title而不是Movie Title + Episode Title。这样你就可以只计算查询中的标题,而不是存储冗余数据,然后担心如何更新它。