2010-06-02 148 views
1

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

 
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 

我想获得雇员表的价值,其中选择了$ id。然后$ id也获得log.time,log.date,logout.time和logout.date的值。

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

+0

你是什么意思“没什么反应”?你能发布你有问题的确切查询吗? – 2010-06-02 06:05:00

回答

3

由您决定将它放入您的应用程序,但查询看起来像这样。丹的查询不会完全返回你所说的你正在寻找的东西。

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} 
+0

非常感谢。这是我需要的。 – Jorge 2010-06-02 07:26:31

+0

但我怎样才能得到l.time的价值?如果我使用$ row ['time'];只显示lo.time。 – Jorge 2010-06-02 07:32:31

+0

在第一行中,将“lo.time”更改为“lo.time AS logout_time”。现在你应该可以访问$ row ['logout_time'] – Entendu 2010-06-02 16:29:00

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语句首先将员工加入到日志中,然后将该结果加入到注销中。

+0

这是正确的,但我需要返回查询。 – Jorge 2010-06-02 07:25:38

1

约旦,

要扩大查询Entendu给了(我不能答复说),你可以使用别名:

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

FROM员工Ë LEFT JOIN数l ON l.employee_id = e.employee_id LEFT JOIN注销LO ON lo.employee_id = e.employee_id WHERE e.employee_id = {您的ID在这里}

这样你可以打电话给$ row ['l_time']来获取l.time的值