从另一个表中选择没有主表外键的字段

时间:2018-09-04 01:52:08

标签: php pdo

我有3个要查询的Microsoft Access数据库表。但是我只设法查询2个表,这比较容易,因为2个表在这2个表中的主键和外键之间具有关系。

表tblEmployee

Employee ID | Employee Name | Department ID |
     1      |       A       |      AS1      |
     2      |       B       |      CEO      |
     3      |       C       |      AS2      |

表tblDepartment

Department ID |  Department   |
     CEO      |    Chairman   |
     AS1      |   Assistant1  |
     AS2      |   Assistant2  |

表tblPAyTransTemp

Employee ID | Payment |
     1      |   50.00 |
     2      |   80.00 | 
     3      |   30.00 |

这是我的代码:

$sql = "SELECT `Employee ID` AS `No`,
        (
            SELECT `Employee Name` 
            FROM `tblEmployee` 
            WHERE `Employee ID` = tblPAyTransTemp.`Employee ID`
        ) AS `Name`,
        (
            SELECT `Department` 
            FROM `tblDepartment`
            WHERE `Department ID` = tblEmployee.`Department ID`
        ) AS `Department`,
        `Payment`
    FROM `tblPAyTransTemp`    
    WHERE `Month` ='$month' AND `Year` ='$year'
    ORDER BY `Employee ID` ASC";

if ($result = $connectdb->query($sql)) 
{
   $totalPayment = 0;

   echo '<table>'            
            . '<th>No</th>'
            . '<th>Name</th>'
            . '<th>Department</th>'
            . '<th>Payment</th>'
        . '</tr>';

   foreach ($result->fetchAll(PDO::FETCH_ASSOC) as $row) 
   {
      echo '<tr>'
      . '<td>' . $row["No"] . '</td>'
      . '<td>' . substr($row["Name"], 0, 50) . '</td>'               
      . '<td>' . $row["Department"] . '</td>'
      . '<td>' . number_format((float)$row["Payment"], 2, '.', '') . '</td>'
      . '</tr>';

      $totalPayment += $row["Payment"];
   }

   echo '<tr>'
   . '<td colspan="3">Total</td>'
   . '<td>' . number_format((float)$totalPayment, 2, '.', '') . '</td>'
   . '</tr>'
   . '</table>';
}

如何显示这样?

  No   |  Name | Department  | Payment |
   2   |   B   |   Chairman  |  80.00  |
           Assistant         |         |<---subheader for each department 
   1   |   A   |  Assistant1 |  50.00  |< list of subheader
   3   |   C   |  Assistant2 |  30.00  |< list of subheader
            Total            | 160.00  |

0 个答案:

没有答案