【发布时间】:2011-08-09 12:15:10
【问题描述】:
如何使用现有 MySQL 表中的信息来填充新表。我有三个表,每个表都有一个我想包含在新表中的键,如下所示:
TRANSACTIONS TABLE
tr_id INT NOT NULL AUTO_INCREMENT
other columns
.
.
PEOPLE TABLE
p_id INT NOT NULL AUTO_INCREMENT
tr_id INT
other columns
.
.
HOLIDAYS TABLE
h_id INT NOT NULL AUTO_INCREMENT
tr_id INT
other columns
.
.
TRACKING TABLE
track_id INT NOT NULL AUTO_INCREMENT
tr_id
p_id
h_id
other columns
.
.
我什至不确定我是否需要新表中的 p_id 和 h_id 列,因为我只需要能够从跟踪表中获取单个 tr_id 的所有行,但它们可能有用,所以我可能会把它们留在里面。 (我确实需要他们在新表中创建行,因为一个事务可能与多个前往多个度假目的地的人相关,并且跟踪表中的每一行都与一个人的单个目的地相关,所以每个人有 2 个去到相同的 2 个度假目的地,跟踪表中将有 4 行)
我试过了:
INSERT INTO tracking (tr_id, p_id, h_id) VALUES
(SELECT t.tr_id, p.p_id, h.h_id
FROM transactions t
JOIN people p
JOIN holidays h
WHERE t.tr_id = p.tr_id
AND t.tr_id = h.tr_id);
但这给了我一个错误。
感谢您对此提出的任何建议。非常感谢。
【问题讨论】:
-
您遇到的错误是什么?跟踪表上的主键是什么?
-
mysql给你什么错误?它通常有一个数字/error_id。
-
ERROR 1064 (42000):您的 SQL 语法有错误;检查与您的 MySQL 服务器版本相对应的手册,了解在 'SELECT t.tr_id, p.p_id, h.h_id 附近使用的正确语法
-
@Joe 我已经更新了答案并提供了参考。让我知道更新的语法是否有效。
标签: mysql