PHP在表上放了两个查询结果

时间:2014-10-30 13:38:30

标签: php mysql

我要查询mysql数据库。 此查询返回到数组值,我需要将此数组放在表中。 第一行与第二行相关。 第一个查询包含生产线中所有工作场所的一组。 第二个查询包含生产线和工作场所每个工作场所的工人分类。

让我们看看:

第一行 - 工作场所

第二行 - 分类

enter image description here

链接表代表每个工作场所的工人分类。

我需要将第一行和第二行关联起来,但不知道我是怎么做的。

请帮助。

2 个答案:

答案 0 :(得分:0)

如果没有看到您的数据库表,很难给出具体的答案,但通常我会使用您工作场所的左连接到工作人员位置。对于这个例子,我假设一个像这样的表结构:

工作场所:

workplace_id - autoincrment primary key
workplace_label - name to be used for display
[other workplace data fields] - not important for this example

workplace_id   workplace_label
1              0001
2              0002
...

工人:

worker_id - autoincrement primary key
[other worker data fields] - not important for this example

workers_workplaces:

workplace_id - part of compound primary key with worker_id
worker_id - part of compound primary key with workplace_id

获取您要查找的数据的查询可能如下所示:

SELECT
    wp.workplace_label AS workplace,
    COUNT(wwp.worker_id) AS worker_count
FROM workplaces AS wp
LEFT JOIN worker_workplaces AS wwp
    ON wp.workplace_id = wwp.workplace_id
GROUP BY workplace

这会返回像

这样的数据
workplace     worker_count
0001          0
0002          0
0003          2
0004          1
...

注意,我没有在查询中实际使用workers表是不必要的。我只想解释这个表的存在,以便您可以看到workers_workplaces表如何将其他两个表关联在一起。

在PHP中读出结果集时,您可能会执行以下操作:

$workplace_array = array();
while ($row = /* your DB fetch here */) {
    $workplace_array[$row['workplace'] = $row['worker_count'];
}

这为您提供了一个关联数组,其中包含工作区标签作为键。如果你想获得工作场所标签(例如在表格中显示你的标题行。你可以很容易地得到它:

$workplace_labels = array_keys($workplace_array);

答案 1 :(得分:0)

通过此查询,我可以搜索工作场所和分类

    SELECT DISTINCT PT.ID_WORKPLACE, F.WORKER, F.CLASSIFICATION, PT.LINE 
    FROM WORKPLACE_FORMATION PF 
    LEFT JOIN FORMATION F ON PF.ID_FORMATION=F.ID_FORMATION 
    RIGHT JOIN WORKPLACE_FORMATION PT ON PF.ID_WORKPLACE=PT.ID_WORKPLACE 
    WHERE F.WORKER=1234  
    OR F.WORKER IS NULL 
    AND PT.LINE=126;

PHP代码将数据放入表中:     “;

echo '<tr>';
echo '<td colspan="'.$postos_numero.'">Postos de Trabalho</td>';
echo '</tr>';

echo '<tr align="center" valign="middle" class="tabelas">';
while ($registo_postos = mysql_fetch_array($resultado_pesquisa_entre_datas))
    {  

echo '<td>';
echo "".$registo_postos['POSTO']."";
        echo '</td>';}
        echo '</tr>';
echo '<tr align="center" valign="middle" class="tabelas">';
while ($registo_postos_d = mysql_fetch_array($resultado_pesquisa_colab_linha_desmp))
    { 
if ($registo_postos_d['DESEMP'] == NULL){

echo '<td>';
echo "<img height='20' width='20' src='./img/x.png' title='Sem formação neste posto de trabalho'>";
echo '</td>'; 

}elseif($registo_postos_d['DESEMP'] == 1){

echo '<td>';
echo "<img height='20' width='20' src='./img/!.png' title='Produz com supervisão'>";
echo '</td>';

}elseif($registo_postos_d['DESEMP'] == 2){

echo '<td>';
echo "<img height='20' width='20' src='./img/v.png' title='Produz sem supervisão e está apto a dar formação'>";
echo '</td>';

        }}
     echo '</tr>';

echo '</table>';

?>

在此图片上查看结果: http://s18.postimg.org/4i163rtuh/image_result.png