mysqlmysql-error-1066

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


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` 

Solution

  • 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.