2014-10-30 38 views
-2

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

让我们来看看:

第一行 - 工作场所

第二排 - 分类

enter image description here

表上的链接表示每个职场工作者的分类。

我需要将第一行与第二行关联,但不知道如何执行此操作。

请帮忙。 谢谢

+0

为什么我的问题是不清楚或不有用吗? – JoaoVM 2014-10-30 13:47:46

+0

好像你应该用一个LEFT JOIN查询来获取所有这些数据。 – 2014-10-30 13:47:58

+0

我有一个简单的查询来返回所有的工作场所放在桌子上。并有第二个查询返回工作场所和工作分类的某些工作场所,第二个查询使用内部连接 – JoaoVM 2014-10-30 13:53:13

回答

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

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); 
+0

请看这个图像架构http://s30.postimg.org/n3uu1etlt/Captura_de_tela_2014_10_30_14_26_21.png – JoaoVM 2014-10-30 15:04:11

+0

好吧,这个查询返回所有工作场所,工人分类和工人ID。我会尝试把它放在HTML表格做相同的问题图像的方式。 SELECT DISTINCT PT.ID_WORKPLACE,F.WORKER,F.CLASSIFICATION,PT.LINE FROM WORKPLACE_FORMATION PF LEFT JOIN地层F ON PF.ID_FORMATION = F.ID_FORMATION RIGHT JOIN WORKPLACE_FORMATION PT ON PF.ID_WORKPLACE = PT.ID_WORKPLACE 其中f .WORKER = 1234 OR F.WORKER is NULL AND PT.LINE = 126; – JoaoVM 2014-10-30 15:41:36