Error # 1066 - not a unique table / alias in MySQL

139 Views Asked by At

Good afternoon, I’m trying to fulfill the request while writing an error. Error # 1066 does not quite understand how it can be fixed in my particular case. Perhaps the problem is that I connect to the table several times and need an alias.

SELECT `employees`.`name`, `employees`.`surname`, `employees`.`patronymic`,
       `doc`.`name`, `doc`.`agreement`, `tank`.`name`, 
       `liquid`.`name`, `WorkPlan`.`description`
FROM `WorkPlan` , `employees` , `doc` , `tank` , `liquid`
LEFT JOIN `WorkPlan` ON `tank`.`id` = `WorkPlan`.`id_tank` 
LEFT JOIN `WorkPlan` ON `liquid`.`id` = `WorkPlan`.`id_liquid` 
LEFT JOIN `WorkPlan` ON `doc`.`id` = `WorkPlan`.`id_doc` 
AND `WorkPlan`.`id_tank` = `tank`.`id`  
AND `WorkPlan`.`id_liquid` = `liquid`.`id`  
AND `WorkPlan`.`id_doc` = `doc`.`id` 
1

There are 1 best solutions below

0
forpas On BEST ANSWER

I suspect (by your SELECT list of columns) that you want to join employees to the other tables.
For every join you must specify in the ON clause the columns that relate the 2 tables and it is a good practice to use aliases for the tables which shorten the code and make it more readable:

SELECT e.name, e.surname, e.patronymic,
       d.name, d.agreement, 
       t.name, 
       l.name, 
       w.description
FROM employees e
LEFT JOIN WorkPlan w ON e.? = w.? 
LEFT JOIN tank t ON t.id = w.id_tank 
LEFT JOIN liquid l ON l.id = w.id_liquid 
LEFT JOIN doc d ON d.id = w.id_doc 

Replace the ? with the names of the columns that relate employees with WorkPlan.