繁体   English   中英

将一个表中的列与另一个表进行匹配

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM