2015-08-17 2 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, как показано в запросе: $ запрос = «Удалить сотрудника, employee_medical ОТ работника LEFT JOIN сотрудника ПО employee.emp_id = employee_medical.emp_id WHERE employee.emp_id = '$ ид' «; – Kamal

ответ

2

Ваш запрос неверен. Это не должно быть DELETE employee FROM employee, но просто DELETE FROM employee.

Ваша JOIN также неверна, поскольку вы пытаетесь присоединиться к тем же двум таблицам вместе (вы присоединяетесь к 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, хотя, я считаю, что это в ваших интересах. 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; 
Смежные вопросы