我这里有两个表结构:
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'";
错误:不唯一的表/别名:'employee'
我该如何解决这个问题?
答案 0 :(得分:2)
您的查询错误。它不应该是DELETE employee FROM employee
,而只是DELETE FROM employee
。
您的JOIN也不正确,因为您似乎正在尝试将相同的2个表连接在一起(您使用employee
加入employee
)。
最后,在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,我相信这符合您的利益。 DELETE CASCADE
可能是您需要的,而不是JOIN
。
答案 1 :(得分:0)
我的偏好是明确要删除的表(以及使用表别名)。
DELETE e, em
FROM employee e LEFT JOIN
employee_medical em
ON e.emp_id = em.emp_id
WHERE e.emp_id = $id;