-1

我的任务是在屏幕上显示由 SQL 和 PHP 构建的表,但 SQL 表的结构不是我需要的。

在源表中:

╔═════════════════════════════════╗
║   User    Date     Attr    Val  ║
╠═════════════════════════════════╣
║   alex    1.2.3      A      523 ║
║   alex    1.2.3      b      5   ║
║   alex    1.2.3      c      12  ║
║   mark    2.3.4      A      244 ║
║   mark    2.3.4      b      0   ║
║   mark    2.3.4      c      88  ║
╚═════════════════════════════════╝

每个用户在同一日期出现 3 次,唯一改变的是 attr 和 val,但我需要显示的表格是每个用户,如下所示:

对于 - 亚历克斯:

╔═════════════════════╗
║ Date   A    B    C  ║
╠═════════════════════╣
║ 1.2.3  523   5   12 ║
╚═════════════════════╝

(每个日期只有一行)

我的任务是构建一个系统,该系统将自动从数据库中的源 SQL 表中获取数据并创建最新的表。我自己构建了表,但不知道如何自动将数据插入其中。

谢谢 !

4

1 回答 1

0

您可以将内联选择与相应的 where 子句一起使用。以下代码是为 mssql 服务器编写的,但它也有可能在 mysql 中工作(我已经很久没有为 mysql 编写任何东西了)

SELECT User, Date (SELECT Val FROM SourceTable AS ST1 WHERE ST1.Attr='A' AND ST1.User = SourceTable.User AND ST1.Date = SourceTable.Date) AS A, (SELECT Val FROM SourceTable AS ST2 WHERE Attr='B' AND ST2.User = SourceTable.User AND ST2.Date = SourceTable.Date) AS B, (SELECT Val FROM SourceTable AS ST3 WHERE Attr='C' AND ST3.User = SourceTable.User AND ST3.Date = SourceTable.Date) AS C FROM SourceTable

您也可以使用与此类似的连接。

于 2013-09-21T22:46:00.123 回答