PHP MySQL选择多个表

时间:2010-06-02 06:01:39

标签: php mysql

是否可以在1个数据库中一次选择3个表?

Table 1: employee
              --> employee_id
              --> first_name
              --> last_name
              --> middle_name
              --> birthdate
              --> address
              --> gender
              --> image
              --> salary

Table 2: logs
              --> log_id
              --> full_name 
              --> employee_id
              --> date
              --> time
              --> status

Table 2: logout
              --> log_id
              --> full_name 
              --> employee_id
              --> date
              --> time
              --> status

我想获得employee table的值,其中$ id为selected。然后$ id也获取log.time,log.date,logout.time和logout.date的值。

我已经尝试使用UNION但没有任何反应。

3 个答案:

答案 0 :(得分:5)

类似的东西:

SELECT * FROM `employee` as `e` ( LEFT JOIN `logs` ON `e`.`employee_id` = `logs`.`employee_id`) LEFT JOIN `logout` ON `e`.`employee_id` = `logout`.`employee_id` WHERE `e`.`employee_id` = $id

您希望使用相关列(员工ID)将表连接在一起。此sql语句首先将employee连接到日志,然后将该结果连接到logout。

答案 1 :(得分:3)

由您决定将它放在您的应用中,但查询看起来像这样。 Dan的查询不会完全返回您所说的内容。

SELECT e.*, l.time, l.date, lo.time, lo.date 
  FROM employee e
  LEFT JOIN logs l 
    ON l.employee_id = e.employee_id
  LEFT JOIN logout lo
    ON lo.employee_id = e.employee_id
  WHERE e.employee_id = {your id here}

答案 2 :(得分:1)

约旦,

要扩展Entendu给出的查询(我无法回复),您可以使用别名:

SELECT e.*, l.time AS l_time, l.date AS l_date, lo.time AS lo_time, lo.date AS lo_date

来自员工e   LEFT JOIN日志l     ON l.employee_id = e.employee_id   LEFT JOIN logout lo     ON lo.employee_id = e.employee_id   WHERE e.employee_id = {your id here}

这样你可以调用$ row ['l_time']来获取l.time

的值