2010-06-17 44 views
9

Tôi có hai bảng:mysql trái bên ngoài tham gia

  1. employee với các lĩnh vực Employees_ID, firstname, Middlename, LastName
  2. timecard với các lĩnh vực Employees_ID, thời gian trong, time-out, tc_date_transaction

Tôi muốn chọn tất cả các bản ghi nhân viên có cùng employee_id với timecard và ngày bằng với ngày hiện tại. Nếu không có hồ sơ nào bằng với ngày hiện tại thì hãy quay trở lại cũng là hồ sơ của nhân viên ngay cả khi không có thời gian, thời gian chờ và tc_date_transaction.

Tôi có một truy vấn như

SELECT * 
    FROM employee LEFT OUTER JOIN timecard 
     ON employee.employee_id = timecard.employee_id 
WHERE tc_date_transaction = "17/06/2010"; 

kết quả này nên như thế này:

 
employee_id | firstname | middlename | lastname | time-in | time-out | tc_date_transaction 
------------------------------------------------------------------------------------------ 
    1  | john  | t   | cruz  | 08:00 | 05:00 | 17/06/2010  
    2  | mary  | j   | von  | null | null  | null 

Trả lời

18

Bạn đang lọc tc_date_transaction để lọc tất cả các giá trị null trong lĩnh vực này, ngay cả những người sinh ra bởi ngoài-tham gia và do đó đánh bại mục đích của nó. Di chuyển bộ lọc "tc_date_transaction =" 17/06/2010 "" vào mệnh đề join và nó sẽ hoạt động.

SELECT * 
    FROM employee LEFT OUTER JOIN timecard 
     ON employee.employee_id = timecard.employee_id and tc_date_transaction = "17/06/2010"; 

hoặc viết

SELECT * 
    FROM employee LEFT OUTER JOIN timecard 
     ON employee.employee_id = timecard.employee_id 
    where (tc_date_transaction = "17/06/2010" or tc_date_transaction is null); 
+0

hi Loxley, Tôi đã thử mã của bạn, nhưng có một lỗi, "tham gia biểu không được hỗ trợ" tnx – tirso

+0

tôi cập nhật câu trả lời của tôi để phản ánh may- này Vấn đề SQL. – Loxley

+0

hi loxley, mã của bạn đang hoạt động. tnx – tirso

Các vấn đề liên quan