我的任务是在屏幕上显示由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
您也可以使用与此类似的联接。