[英]Matching columns from one table with another
抱歉,标题令人困惑,让我尝试解释一下。 问题与定制日志软件有关,公司可以在其中设计自己的“日志”。 每个日志都有一个对应的元数据表,其中包含其日志中的列。
我正在使用php渲染日志中的数据显示。 我首先访问元表中的列名,并使用它通过一个foreach构建表头,如下所示
foreach ($logStructure as $header)
{
echo '<th>' . $header['label'] . '</th>';
}
endforeach;
现在,我从实际日志中进行了另一个选择,以显示要显示的行,并将其放在数组中,调用$ logrow。 如何遍历这些行并将正确的数据放在正确的列中? 在SQl中,我将使用WHERE子句来表达以下内容:
'WHERE $logrow['fieldname'] = $header['label']'
举例来说,元表字段如下所示
[metaid] [columnLabel] [columnNameInData]
001 Log Number logNum
002 Author CreateUser
003 Subject Entry
数据通过这样的语句放入$ header []中
SELECT columnLabel AS label FROM metatable;
日志结构看起来像这样
[logNum] [CreateUser] [Entry]
001 Admin Some Text about Stuff
002 Editor 1 Another Amazing Entry
003 Editor 2 It gets old by now
所以选择看起来像这样
SELECT logNum, CreateUser, Entry FROM log
数据放入$logrow['lognum'], $logrow['CreateUser'], $logrow['Entry']
希望这可以更好地解决问题,我希望将元数据中的列名与实际数据中这些字段的值相匹配。
如果序列总是相同的,而您只想在同一张表中呈现它,我看不出是什么使您无法将它们读入2个单独的数组,然后将其绘制到表上。
首先这个:
SELECT columnNameInData FROM metatable ORDER BY metaid;
将结果放入数组$sort
然后将其内爆并构建第二个select子句:
$columns=implode(', ', $sort);
$SQL="SELECT $columns FROM log";
并将结果读入数组$result2
最后,将您拥有的标题和$ result2的输出组装为日志的行和tds,此表应使记录与标题对齐。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.