我有两张桌子,一张看起来像这样:
ID | Date ID | Data
另一个看起来像这样:
Date ID | Date
你能帮我构建一个基本上不需要第二个表的查询吗?我宁愿让第一张表格成为:ID | Date | Data
如果使用MySQL查询无法做到这一点,我是否应该编写一个快速的PHP脚本来执行此操作?
提前致谢!
答案 0 :(得分:3)
您需要第二个表,因为您想加入它们。正确?
SELECT a.ID, b.Date, a.Data
FROM table1 a
INNER JOIN table2 b
ON a.DataID = b.DataID
答案 1 :(得分:2)
这完全是关于数据库规范化的。如果您保留这两个表,那么您的记录将不那么多余。但是当您消除第二个表时,日期字段将更频繁地重复。因此,我建议您同时使用这两个表,因为这是一种有效的练习。
可以用两种方式构建查询。 对于两个表,您应该使用连接查询:
SELECT f.ID, s.Date, f.Data
FROM table1 f
INNER JOIN table2 s
ON f.DateID=s.DateID
如果您删除了第二个表格,并且第一个表格包含列 ID,日期,数据,则查询可能只是:
SELECT ID, Date, Data
FROM table1
WHERE (filter conditions..)
答案 2 :(得分:2)
1)创建一个新表:
CREATE TABLE table3
(
id BIGINT UNSIGNED NOT NULL AUTO_INCREMENT,
date DATE,
data TEXT,
PRIMARY KEY (id)
)
2)在新创建的表中插入您从前面表格中请求的数据:
INSERT INTO
table3
SELECT
table1.id,
table1.data,
table2.date
FROM
table1, table2
WHERE
table1.date_id = table2.date_id