Странно: MySQL Left Join, «неизвестный столбец»; то же самое левое соединение не работает в запросе с несколькими таблицами - PullRequest
2 голосов
/ 12 ноября 2011

Я пытаюсь выполнить запрос на выборку, который выглядит следующим образом:

SELECT * FROM pages, c_item_category cc
LEFT JOIN pages_tr ON (pages.page_id = pages_tr.page_id AND lang_id = 2)
LEFT JOIN users ON (pages.page_author = users.u_id)
WHERE (pages.page_id = cc.item_id AND cc.cat_id = 7)
  AND (page_date >= 1317420000 AND page_date <= 1320101999)
  AND (page_showinfos = 1)
ORDER BY page_date ASC LIMIT 0,10

Но я получаю эту ошибку: неизвестный столбец 'pages.page_id' в 'предложении'

Почему это? Я могу подтвердить, что у меня есть столбец с именем 'page_id' в 'pages':)

Но когда я выполняю однотабличный запрос с теми же левыми объединениями, он работает хорошо:

SELECT * FROM pages
LEFT JOIN pages_tr ON (pages.page_id = pages_tr.page_id AND lang_id = 2)
LEFT JOIN users ON (pages.page_author = users.u_id)
WHERE (page_date >= 1317420000 AND page_date <= 1320101999)
  AND (page_showinfos = 1)
ORDER BY page_date ASC LIMIT 0,10

В чем моя ошибка в первом запросе? : \

1 Ответ

2 голосов
/ 12 ноября 2011

Попробуйте вместо этого.

SELECT *
FROM pages
LEFT JOIN pages_tr ON (pages.page_id = pages_tr.page_id AND lang_id = 2)
LEFT JOIN users ON (pages.page_author = users.u_id),
c_item_category cc
WHERE (pages.page_id = cc.item_id AND cc.cat_id = 7)
  AND (page_date >= 1317420000 AND page_date <= 1320101999)
  AND (page_showinfos = 1)
ORDER BY page_date ASC LIMIT 0,10
...