TABLE1
CREATE TABLE master(id INT Primarykey,start_point INT,data BLOB)'changes'表:
示例数据
1,0,data1
2,1,data2
3,2,data3
4,4,data4
5,6,data5
6,8,data6
TABLE2
CREATE TABLE更改(id INT,start_point INT,用户VARCHAR(10),数据BLOB)用户表:
示例数据
5,6,user1,data5(已更改数据)
3,2,user2,data3(有变化)
4,6,user2,data4(带有更改)
5,8,user2,data5(带有更改)
表3 CREATE TABLE用户(id INT,用户VARCHAR(10))
示例数据
1,user1
2,user1
3,user1
4,user1
5,user1
1,user2
2,user2
3,user2
4,user2
5,user2
user1的最终结果应该是(表3提供user1的id的信息)
0,data1 ----来自主人
1,data2 ----来自大师
2,data3 ----来自大师
4,data4 -----来自大师
6,data5 ......这是来自变化
user2的最终结果应为
0,data1
1,data2
2,data3
6,data4
8,data5
所以这就是我想要得到的.....我的问题在这里我从改变和主表中获得改变的记录。我不想要改变那些的主记录....任何人都可以帮助我吗?
答案 0 :(得分:0)
对于这样一个简单的应用程序,尝试以您能想到的每种方式实现它。它不太可能每个花费超过一个小时,所以在一天的时间里你肯定会遇到最有效的实施。
你还会发现一些方案是如此复杂或蹩脚,以至于你不会受到启发而无法完成它们。这都是工程过程的一部分。
总之,放松一下。试试一些想法,也许最初编写粗略的架构和查询来检索数据。还要考虑编写查询以填充数据的难度,包括参照完整性。
答案 1 :(得分:0)
'主'表:
CREATE TABLE master (
id INT PRIMARY KEY AUTO_INCREMENT,
user_id INT INDEX,
data BLOB
)
'更改'表:
CREATE TABLE changes (
id INT PRIMARY KEY AUTO_INCREMENT,
master_id INT INDEX,
data BLOB
)
用户表:
CREATE TABLE users (
id INT PRIMARY KEY AUTO_INCREMENT,
name VARCHAR(40)
)
显然,这些表格不足以满足您的需求,但它们将有助于解释您如何将它们联合起来以实现我想要的目标。
假设您拥有用户ID并且它是4,并且您希望从主表中获取用户想要的数据,以及用户对其所做的更改。你可能会这样做:
SELECT m.id master_id, m.data master_data, c.data change_data
FROM master m
JOIN changes c ON c.master_id = m.id
WHERE m.user_id = 4;
这将获取用户拥有的主数据以及对数据的更改。