在我的数据库中,我有2个表。一种用于用户登录信息,另一种用于常规信息。
我正在尝试编写一个查询,该查询将从FK“ users_id”与登录的用户ID相同的行中选择“ firstname”列。
在PHP Im中执行任何操作之前,我将在数据库中运行查询,因此登录的用户ID(通常是变量)将替换为我的testuser的ID。
这是我的查询
SELECT b6vjp_user_info.firstname
FROM b6vjp_user_info
WHERE b6vjp_user_info.users_id LIKE 243
INNER JOIN b6vjp_users ON b6vjp_user_info.users_id=b6vjp_users.id;
这是我的(出于安全原因被审查)登录表,名称为“ b6vjp_users”:
这是我的另一个名为“ b6vjp_user_info”的表:
错误是:
#1064 - Mistake in SQL-Syntax. 'INNER JOIN b6vjp_users ON b6vjp_user_info.users_id=b6vjp_users.id LIMIT 0, 25' on row 4
现在我翻译了一下,因为我的工作环境是德语。但我确定您知道什么是语法错误。
无论如何,我一遍又一遍地检查查询的JOIN部分,并在W3Schools上查找了JOIN教程。但是没有明显错误。
有人看到我以某种方式失败了吗?
答案 0 :(得分:1)
将WHERE
子句放在(最后一个)ON
子句之后。
答案 1 :(得分:0)
您必须在where
子句之后放置on
SELECT b6vjp_user_info.firstname
FROM b6vjp_user_info
INNER JOIN
b6vjp_users ON
b6vjp_user_info.users_id=b6vjp_users.id
WHERE b6vjp_user_info.users_id =243 // i think it int field so no need to use like operator
答案 2 :(得分:0)
我强烈建议使用表别名。您还需要修复SQL子句的顺序。所以:
SELECT ui.firstname
FROM b6vjp_user_info ui JOIN
b6vjp_users u
ON ui.users_id = u.id
WHERE ui.users_id = '243';
或者,更简单地说,没有JOIN
:
SELECT ui.firstname
FROM b6vjp_user_info ui
WHERE ui.users_id = '243';
注意:
LIKE
的操作数应为字符串。因此,使其成为字符串!隐式类型转换会导致各种问题。=
会提供更多信息。如果users_id
确实是一个数字,则只需使用= 243
而不是LIKE
。WHERE
在FROM
子句之后。 JOIN
是FROM
子句中的运算符。JOIN
不是必需的。除非您要从users表中获取列(或者需要使用它来进行高度可疑的过滤),否则请不要理会它。