更新结果

时间:2011-04-11 23:40:47

标签: mysql

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

所以这就是我想要得到的.....我的问题在这里我从改变和主表中获得改变的记录。我不想要改变那些的主记录....任何人都可以帮助我吗?

2 个答案:

答案 0 :(得分:0)

对于这样一个简单的应用程序,尝试以您能想到的每种方式实现它。它不太可能每个花费超过一个小时,所以在一天的时间里你肯定会遇到最有效的实施。

你还会发现一些方案是如此复杂或蹩脚,以至于你不会受到启发而无法完成它们。这都是工程过程的一部分。

总之,放松一下。试试一些想法,也许最初编写粗略的架构和查询来检索数据。还要考虑编写查询以填充数据的难度,包括参照完整性。

答案 1 :(得分:0)

你的问题很模糊。我将用一点SQL定义来编写我认为你的意思

'主'表:

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;

这将获取用户拥有的主数据以及对数据的更改。