我有一个有两个内部连接的查询。一切正常,我从数据库中获取所需的数据,直到我尝试添加一个比较两个字符串的left join
。所以,一切看起来像这样:
$q = 'SELECT * FROM table_1
INNER JOIN on table_2 WHERE table_1.id=table_2.id
INNER JOIN on table_3 WHERE table_1.integer_value=table_3.int_value
LEFT JOIN table_4 ON table_3 WHERE table_3.string_value=table_4.string_value';
这将不返回任何内容。如果我删除LEFT JOIN
,一切正常。
我已经看到了我尝试在数据库中联接的两个字符串值,它们在table_4
和table_3
中是相同的。但是我没有得到任何数据。
在查询结果匹配之前,我是否必须修剪字符串或以某种方式操作它们?
联接的语法是错误的。一个查询只能有一个 WHERE 子句。您希望使用 ON
子句来指定 JOIN 条件。
$q = 'SELECT * FROM table_1
INNER JOIN on ON table_1.id=table_2.id
INNER JOIN on ON table_1.integer_value=table_3.int_value
LEFT JOIN table_4 ON table_3.string_value=table_4.string_value';