2008-11-25 9 views
3

J'ai besoin de modifier l'instruction MySQL suivante pour inclure les informations d'une troisième table ... mais je crains les jointures.MySQL Multi-Table Join

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 

-je fournir également la récupération projects.project_name en faisant correspondre searches.project_id-projects.id.

+0

Quoi ...? Si c'est votre code de production, vous vous ouvrez à une attaque SQL Injection. – Salamander2007

+0

pourriez-vous élaborer? – Ian

+0

Je pense que Robert Wagner répondre à votre question connexe (Comment cette requête MySQL est vulnérable à l'injection SQL?) Résume assez bien mon intention. Ce modèle ouvre la probabilité d'injection SQL, tandis que d'autres motifs le rendent impossible. – Salamander2007

Répondre

6

Consultez SELECT Syntax et JOIN Syntax.

Mais, réponse la plus simple - ajouter une autre instruction 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] J'ai ajouté les -- + commentaires à signaler mes ajouts.

+0

qu'est-ce que c'est - + faire là-bas? – Salamander2007