2017-02-12 62 views
0

我有两个查询下面,第一个是查询我的数据表和第二个是为常规的HTML表。加入2 MYSQL查询

第一个查询是:

SELECT a.*, b.personnel_name 
FROM `work_order` as a 
LEFT JOIN `personnel_master_data` as b ON a.`reg_no` = b.`reg_no` 
WHERE a.`status` = 'Continue' 
GROUP BY `id` 
$sOrder 
$sLimit 

我在我的PHP文件执行的查询和数据表完美的作品,现在第二个查询:

SELECT d.`wo_number`, SUM(d.`crew_est` * d.`manhour_est`) AS 'crew_kali_manhours', 
    CONCAT(((SUM(d.`crew_est` * d.`manhour_est`)/
      (SELECT SUM(c.`crew_est` * c.`manhour_est`) 
      FROM `work_sheet_machine` AS c 
      WHERE c.`wo_number` = '$wo_number')) * 100)) AS `progress` 
FROM `work_sheet_machine` AS d 
WHERE d.`status` = 'FINISH' AND d.`wo_number` = '$wo_number' 

第二个查询,似乎工作经常好带有GET参数的HTML表格。我需要使用第一个查询加入第二个查询,并使用DataTables服务器端处理文件上的该查询。我在将第二个查询中的progress字段加入第一个查询时遇到问题。

+0

你是什么意思?在'work_sheet_machine'和'work_order'表中都有'wo_number'。 –

回答

0

将第二个查询放入第一个查询中作为子查询。

SELECT a.*, b.personnel_name, e.crew_cali_manhours, e.progress 
FROM `work_order` as a 
LEFT JOIN `personnel_master_data` as b ON a.`reg_no` = b.`reg_no` 
LEFT JOIN (
    SELECT d.`wo_number`, SUM(d.`crew_est` * d.`manhour_est`) AS 'crew_kali_manhours', 
     CONCAT(((SUM(d.`crew_est` * d.`manhour_est`)/
       (SELECT SUM(c.`crew_est` * c.`manhour_est`) 
       FROM `work_sheet_machine` AS c 
       WHERE c.`wo_number` = d.wo_number)) * 100)) AS `progress` 
    FROM `work_sheet_machine` AS d 
    WHERE d.`status` = 'FINISH' 
    GROUP BY wo_number 
) AS e ON e.wo_number = a.wo_number 
WHERE a.`status` = 'Continue' 
GROUP BY `id` 
$sOrder 
$sLimit 

使用INNER JOIN instea LEFT JOIN如果work_sheet_machine总是有匹配的行为work_order行。

+0

它的工作。我的天啊!非常感谢。你救了我的命。 :-D –