2015-08-17 39 views
0

刪除我這裏有兩個表的結構:與連接表

employee 
(emp_id INT AUTO_INCREMENT PRIMARY KEY, 
emp_name VARCHAR(100), 
emp_ic VARCHAR(20), 
emp_phone VARCHAR(20), 
emp_address VARCHAR(200)) 

employee_medical 
(id INT AUTO_INCREMENT, 
emp_id INT, 
medical_notes TEXT, 
PRIMARY KEY (id), 
FOREIGN KEY (emp_id) REFERENCES employee(emp_id)) 

我想從兩個表是emp_id刪除行,但如果我嘗試以下沒有工作。

$query = "DELETE employee, employee_medical 
FROM employee 
LEFT JOIN employee ON employee.emp_id = employee_medical.emp_id 
WHERE emp_id='$id'"; 

錯誤:沒有唯一的表/別名: '員工'

我該如何解決這個問題?

+0

嘗試如在查詢中所示添加employee.emp_id:$查詢=「DELETE僱員,employee_medical FROM僱員 LEFT JOIN僱員ON employee.emp_id = employee_medical.emp_id WHERE employee.emp_id = '$ ID' 「; – Kamal

回答

2

您的查詢是錯誤的。它不應該是DELETE employee FROM employee,而只是DELETE FROM employee

你的JOIN也是不正確的,因爲你似乎試圖一起加入相同的2個表(你加入employeeemployee)。

最後在你的WHERE子句中,你應該指定從哪個表中檢查emp_id。在這種情況下,您也不需要圍繞您的$id單引號。這是一個數字,而不是一個字符串。

$query = "DELETE FROM employee 
LEFT JOIN employee_medical ON employee.emp_id = employee_medical.emp_id 
WHERE employee.emp_id=$id"; 

請看看this question雖然我相信這是你的興趣。 A DELETE CASCADE可能是您需要的而不是JOIN

0

我的首選是明確你正在刪除的表(以及使用表別名)。

DELETE e, em 
    FROM employee e LEFT JOIN 
     employee_medical em 
     ON e.emp_id = em.emp_id 
WHERE e.emp_id = $id;