Esta es mi consulta

 $searched =  'SELECT first_name, surname, team, id, time FROM users WHERE first_name LIKE "'.$firstname.'%" AND surname LIKE "'.$surname.'%"'

Necesito hacer una combinación interna en una mesa de equipos.

La estructura es la siguiente.

id
teamname
slug

Necesito obtener el nombre del equipo en el que se encuentra la unión en teams.id y users.id.

Parece que no puedo obtener la sintaxis correcta.

0
LeBlaireau 2 sep. 2016 a las 15:18

2 respuestas

La mejor respuesta

Necesitas INNER JOIN. Además, time es una palabra clave para MySQL y es mejor escapar de ella. Los campos id deben usarse con el nombre de la tabla porque son ambiguos. Finalmente estás bajo amenaza de inyección SQL.

SELECT users.first_name, users.surname, users.team, users.id AS users_id, `time`
FROM users 
INNER JOIN teams
ON teams.id = users.id
WHERE users.first_name LIKE "'.$firstname.'%" AND users.surname LIKE "'.$surname.'%"

Además, ¿hay alguna razón en particular por la que JOIN debería estar en teams.id y users.id? Se supone que son cosas diferentes.

0
Kostas Mitsarakis 2 sep. 2016 a las 12:32

¿No debería tener team.id = users.teamid o team.userid = users.id en la condición where? También en la selección ha utilizado "equipo". Supongo que debería ser "nombre de equipo".

El SQL probablemente debería ser

SELECT 
    first_name, 
    surname, 
    teamname, 
    id, 
    time 
FROM 
    users,
    teams
WHERE 
        first_name LIKE "'.$firstname.'%" 
    AND surname LIKE "'.$surname.'%"'
    AND users.teamid = teams.id
0
Pramod CS 2 sep. 2016 a las 12:35