-3

我有两张桌子,一张看起来像这样:

ID | Date ID | Data

另一个看起来像这样:

Date ID | Date

你能帮我构建一个基本上不需要第二个表的查询吗?我宁愿第一张桌子是:ID | Date | Data

如果 MySQL 查询无法做到这一点,是否有一个我应该编写的快速 PHP 脚本来执行此操作?

提前致谢!

4

3 回答 3

3

您将需要第二张桌子,因为您想加入它们。正确的?

SELECT  a.ID, b.Date, a.Data
FROM    table1 a
        INNER JOIN table2 b
            ON a.DataID = b.DataID
于 2013-01-21T07:15:46.110 回答
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..)
于 2013-01-21T07:24:34.660 回答
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
于 2013-01-21T07:26:07.317 回答