2010-06-02 6 views
1

Est-il posibble de sélectionner 3 tables à la fois dans une base de données?
PHP MySQL Sélectionner plusieurs tables

 
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 

Je voulais obtenir la valeur de la table des employés où id $ de sélectionné. Ensuite, le $ id obtient également la valeur de log.time, log.date, logout.time et logout.date.

J'essaie déjà d'utiliser UNION mais rien ne se passe.

+0

Que voulez-vous dire par "rien ne se passe"? Pourriez-vous publier la requête exacte avec laquelle vous rencontrez des problèmes? –

Répondre

3

La requête de Dan ne renverra pas exactement ce que vous avez dit que vous recherchez.

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

Merci beaucoup .. C'est ce dont j'ai besoin. – Jorge

+0

Mais comment puis-je obtenir la valeur de l.time? Si j'utilise $ row ['time']; seul le lo.time est montré. – Jorge

+0

Dans la première ligne, remplacez "lo.time" par "lo.time AS logout_time". Vous devriez maintenant pouvoir accéder à $ row ['logout_time'] – Entendu

5

Quelque chose comme:

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 

Vous voulez joindre les tables ensemble à l'aide de leur colonne associée, l'identifiant de l'employé. Cette instruction sql rejoint d'abord l'employé dans les journaux, puis ce résultat est joint à la déconnexion. À vous de le mettre dans votre application, mais la requête ressemble à ceci:

+0

c'est correct mais j'ai besoin de retourner la requête. – Jorge

1

Jordanie,

développiez la requête a Entendu (je ne peux pas répondre à cette question), vous pouvez utiliser les alias:

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

FROM employee e LEFT JOIN journaux l SUR l.employee_id = e.employee_id LEFT JOIN lo SUR fermeture de session lo.employee_id = e.employee_id OÙ e.employee_id = {votre identifiant ici}

De cette façon, vous pouvez appeler $ row ['l_time'] pour obtenir la valeur de l.time

Questions connexes