@Aleksander_M

Как правильно составить запрс с двумя INNER JOIN?

Как правильно составить запрос?
Накидал такой, но не работает и завершается ошибкой Not unique table/alias
С одним INNER JOIN работает корректно
DB MySQL
Подскажите пожалуйста где тут ошибка?

select `pref_site_content`.*, 
	`pref_site_tmplvar_contentvalues`.`value` as `picture`, 
	`pref_site_tmplvar_contentvalues`.`value` as `sort_pos` from `pref_site_content` 
		inner join `pref_site_tmplvar_contentvalues` on `pref_site_tmplvar_contentvalues`.`contentid` = `pref_site_content`.`id` and `pref_site_tmplvar_contentvalues`.`tmplvarid` = 37 
		inner join `pref_site_tmplvar_contentvalues` on `pref_site_tmplvar_contentvalues`.`contentid` = `pref_site_content`.`id` and `pref_site_tmplvar_contentvalues`.`tmplvarid` = 111 
		where `pref_site_content`.`id` not in (898, 899, 900, 902) and (`template` = 40 and `published` = 1)
  • Вопрос задан
  • 65 просмотров
Решения вопроса 1
@alexalexes
Очевидно, что нужны алиасы к таблицам, особенно к тем, которые несколько раз присоединяются.
select psc.*, 
  pt1.`value` as `picture`, 
  pt2.`value` as `sort_pos`
 from `pref_site_content` as psc
    inner join `pref_site_tmplvar_contentvalues` as pt1 on pt1.`contentid` = psc.`id` and pt1.`tmplvarid` = 37 
    inner join `pref_site_tmplvar_contentvalues` as pt2 on pt2.`contentid` = psc.`id` and pt2.`tmplvarid` = 111 
    where psc.`id` not in (898, 899, 900, 902)
       and (`template` = 40 and `published` = 1) -- тут, возможно, тоже можно добавить, если в таблицах поля одинаково названы
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы