Объединение нескольких таблиц MySQL

Мне нужно изменить следующую инструкцию MySQL, чтобы включить информацию из третьей таблицы... но я не умею соединяться.

select
    ss.*,
    se.name as engine,
    ss.last_run_at + interval ss.refresh_frequency day as next_run_at,
    se.logo_name    
from 
    searches ss join search_engines se on ss.engine_id = se.id
where
    ss.user_id='.$user_id.'
group by ss.id
order by ss.project_id, ss.domain, ss.keywords

Мне также нужно включить получение projects.project_name путем сопоставления searches.project_id с projects.id.


person Ian    schedule 25.11.2008    source источник
comment
Что...? Если это ваш производственный код, вы подвергаете себя атаке SQL Injection.   -  person Salamander2007    schedule 25.11.2008
comment
Я думаю, что ответ Роберта Вагнера на ваш связанный с этим вопрос (как этот запрос MySQL уязвим для внедрения SQL?) в значительной степени подводит итог моим намерениям. Этот паттерн увеличивает вероятность SQL Injection, в то время как другой паттерн делает это невозможным.   -  person Salamander2007    schedule 25.11.2008


Ответы (1)


Ознакомьтесь с SELECT Syntax и JOIN Синтаксис.

Но самый простой ответ — добавить еще один оператор JOIN..ON.

select
        ss.*,
        se.name as engine,
        ss.last_run_at + interval ss.refresh_frequency day as next_run_at,
        se.logo_name,
        pr.project_name -- +
from 
        searches ss
        join search_engines se on ss.engine_id = se.id
        join projects pr on ss.project_id = pr.id -- +
where
        ss.user_id='.$user_id.'
group by ss.id
order by ss.project_id, ss.domain, ss.keywords

[EDIT] Я добавил -- + комментариев, чтобы указать на мои дополнения.

person Jonathan Lonowski    schedule 25.11.2008
comment
что это -- + там делает? - person Salamander2007; 25.11.2008