SQL 表:如何显示从另一个 SQL 表构建的表


SQL table: How can I show a table built from another SQL table?

我的任务是在屏幕上显示由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表中获取数据并创建最新的表。我构建了表本身,但不知道如何将数据自动插入其中。

谢谢!

您可以将内联选择与相应的 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

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