Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/html/86.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用php从sql数据库创建额外的组合html表_Php_Html_Sql - Fatal编程技术网

使用php从sql数据库创建额外的组合html表

使用php从sql数据库创建额外的组合html表,php,html,sql,Php,Html,Sql,在给这篇文章打上双标记之前,请仔细阅读。我有一个MySQL数据库,有3个表,T1、T2和T3。他们的数据如下: T1: T2: T3: 我想创建以下组合html表: name val1 val2 val3 val4 val5 val6 John 1 2 3 4 5 6 Mary 1 2 - - 4 5 Mark - - 1 2 3

在给这篇文章打上双标记之前,请仔细阅读。我有一个MySQL数据库,有3个表,T1、T2和T3。他们的数据如下:

T1:

T2:

T3:

我想创建以下组合html表:

name  val1  val2  val3  val4  val5  val6    
John   1      2    3      4    5      6    
Mary   1      2    -      -    4      5    
Mark   -      -    1      2    3      4

我觉得这很复杂。有什么办法吗?

没那么复杂

如果MySQL是您更强的语言,那么编写一个查询,将三个表与所需列中的所需值连接到一个数组中

如果PHP是您更强的语言,那么编写三个查询,将每个表中的值选择到不同的数组中。然后将这些数组与所需的列合并到一个数组中

在这两种情况下,您都希望结果是一个数组,每个用户有一个键,该键具有6个值

您可以直接将该结果迭代到html表中

SELECT TX.NAME,
(SELECT val1 FROM T1
    WHERE T1.NAME = TX.NAME) AS V1,
(SELECT val2 FROM T1
    WHERE T1.NAME = TX.NAME) AS V2,
(SELECT val3 FROM T2
    WHERE T2.NAME = TX.NAME) AS V3,
(SELECT val4 FROM T2
    WHERE T2.NAME = TX.NAME) AS V4,
(SELECT val5 FROM T3
    WHERE T3.NAME = TX.NAME) AS V5,
(SELECT val6 FROM T3
    WHERE T3.NAME = TX.NAME) AS V6
FROM (
SELECT NAME FROM T1
UNION
SELECT NAME FROM T2
UNION
SELECT NAME FROM T3) AS TX
我们可以对每个不同的列执行一个子查询。

使用union all和group by:

或者,如果您知道t3具有所需的所有行,请使用left join:


我不建议完全加入。创建正确的查询有点棘手,而且很容易出错,从而过滤掉行。

通过执行命令I get:1064,您的SQL语法有错误;检查与您的MariaDB服务器版本相对应的手册,以了解在第3行“T1.name=T2.name上的外部联接T2”附近使用的正确语法MariaDB中没有完整的外部联接,我会改变我的答案。我会改变我的答案。新的命令返回:新的命令返回:约翰·我的回答我的答案。我会改变我的答案。新的命令返回:约翰·1 1