|
|||||
|
1054 Unknown column 'table1.id' in 'on clause'Ошибка 1054 MySQL Unknown column 'table1.id' in 'on clause' может произойти при написании, казалось бы, правильного запроса: SQL запрос 1
SELECT table1.content, table2.content1, table3.content3 FROM table1, table2 LEFT JOIN table3 ON table3.id_table1 = table1.id WHERE table1.id = 20 AND table2.id_table1 = table1.id Переписав запрос так, чтобы table2 тоже присоединялась с помощью LEFT JOIN, ошибка 1054 "уходит": SQL запрос 2
SELECT table1.content, table2.content1, table3.content3 FROM table1 LEFT JOIN table2 ON table2.id_table1 = table1.id LEFT JOIN table3 ON table3.id_table1 = table1.id WHERE table1.id = 20 Второй SQL запрос практически аналогичен первому, за исключением того, что данные из table1 будут получены в не зависимости от того, есть ли необходимый id в table2, что не всегда приемлимо. Побороть ошибку MySQL 1054 Unknown column 'table1.id' in 'on clause' возможно и без изменения логики запроса, просто заменив запятую во второй строке первого запроса (FROM table1, table2) на оператор JOIN: FROM table1 JOIN table2. В итоге, запрос к MySQL будет выглядеть так: SQL запрос 3
SELECT table1.content, table2.content1, table3.content3 FROM table1 JOIN table2 LEFT JOIN table3 ON table3.id_table1 = table1.id WHERE table1.id = 20 AND table2.id_table1 = table1.id Ошибка Unknown column 'table1.id' in 'on clause' № 1054 после первого запроса возникала из-за того, что оператор запятая (а это именно оператор, аналогичный оператору JOIN), имеет меньший приоритет чем JOIN и LEFT JOIN. Из-за этого, к моменту запроса table1.id, данные table1 еще не были доступны: table2 уже прочитана, table1 еще нет. Зная про приоритеты и причину возникновения ошибки 1054 Unknown column 'table1.id' in 'on clause', легко можно написать рабочий SQL запрос с оператором-запятой, просто заменив порядок подключения таблиц в FROM (c table1, table2 на table2, table1): SQL запрос 4
SELECT table1.content, table2.content1, table3.content3 FROM table2, table1 LEFT JOIN table3 ON table3.id_table1 = table1.id WHERE table1.id = 20 AND table2.id_table1 = table1.id
Опубликовано: 2011/06/07
HTML-код ссылки на эту страницу:
<a href="https://petrenco.com/mysql.php?txt=52" target="_blank">Ошибка MySQL: Unknown column 'table1.id' in 'on clause' 1054</a> 20267
Комментарии
Спасибо, помогло
Спасибо!
Добавить комментарий
|