2017-12-05 9 views
0

私は生産プロセスに関するデータを取得する方法を探しています。 私は2つのテーブルを持っている:[mysql] [php] 2つのテーブルからの結合結果の問題とPHPでのフィルタリング

生産:店の製品情報

タイムライン:そこの従業員の詳細があり、彼は製造工程をしたとき

生産:から

-------------------------- 
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 

手順列のステップはあらかじめ決められている(diag、rep、test)

私は結果を得たい:

---------------------------------------------------------------------------------------- 
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を使用して行うことができますか?ベースは巨大なので、最高のパフォーマンスで。

答えて

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' 

これは解決策に十分に近い出発点です。

関連する問題