[mysql] [php]有问题的连接结果来自两个表并在php中过滤

时间:2017-12-05 11:45:35

标签: php mysql

我正在寻找获取生产过程数据的方法。 我有两张桌子:

生产:存储产品信息

时间表:有员工的详细信息以及何时进行生产步骤

生产:

--------------------------
internal | type of closing
--------------------------
123      | close
122      | open

timeline:
------------------------------------------------
id | internal | employee | date        | step
------------------------------------------------
1  | 123      | E01      | 2017-11-11  | diag
2  | 123      | E03      | 2017-11-12  | rep
3  | 122      | E06      | 2017-11-05  | diag

列步骤的步骤是预定的(诊断,代表,测试)

我想得到一个结果:

----------------------------------------------------------------------------------------
internal | diag | date_diag  | rep  | date_rep   | test  | date_test  | type of closing
----------------------------------------------------------------------------------------
123      | E01  | 2017-11-11 | E03  | 2017-11-12 | NULL  | NULL       | close
122      | E06  | 2017-11-05 | NULL | NULL       | NULL  | NULL       | open

稍后通过date_rep(或)date_test(或)date_diag和结束类型(关闭/打开)过滤此结果。 如何使用Mysql和PHP完成这项工作?具有最佳性能,因为基础庞大。

1 个答案:

答案 0 :(得分:0)

您应该在同一个表上使用不同的别名,以这样的方式加入表:

SELECT T1.internal, 
       T1.employee, 
       T1.date as date_diag,
       T2.employee as rep,
       T2.date as date_rep,
       NULL,
       NULL,
       P.description
FROM timeline T1
INNER JOIN production P ON T1.internal = P.internal 
LEFT JOIN timeline T2 ON T1.internal = T1.internal and T2.step = 'rep'
WHERE T1.step ='diag'

这是一个足够接近解决方案的起点。