【问题标题】:Inner join with where clause使用 where 子句进行内连接
【发布时间】:2016-09-02 12:18:23
【问题描述】:

这是我的查询

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

我需要对一个团队表进行内部联接。

结构如下。

id
teamname
slug

我需要在 teams.id 和 users.id 中获取加入的团队名称。

我似乎无法正确使用语法。

【问题讨论】:

  • 在 teams.id=users.id 上内部加入团队

标签: mysql inner-join where-clause


【解决方案1】:

您需要INNER JOINtime 也是 MySQL 的 keyword,最好避开它。字段id 应与表名一起使用,因为它们不明确。最后,您面临 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.'%"

另外,JOIN 应该在teams.idusers.id 上是否有任何特殊原因。它们应该是不同的东西。

【讨论】:

  • 时间不是保留字
  • @Strawberry,这不是关键字吗?
  • 是关键字,不是保留字。
  • 是的。这是一个关键字(无论是什么意思)。它不是保留的。
  • 好的,抱歉,我在翻译中迷路了。我把它修好了。
【解决方案2】:

在 where 条件下不应该有 team.id = users.teamidteam.userid = users.id 吗?同样在选择中您使用了“团队”。我想它应该是“团队名称”。

SQL 应该是

SELECT 
    first_name, 
    surname, 
    teamname, 
    id, 
    time 
FROM 
    users,
    teams
WHERE 
        first_name LIKE "'.$firstname.'%" 
    AND surname LIKE "'.$surname.'%"'
    AND users.teamid = teams.id

【讨论】:

    猜你喜欢
    • 2015-09-19
    • 2011-12-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-08-03
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多