2010-06-02 144 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的值