我有两个内部联接的查询。一切正常,我从数据库中获取所需的数据,直到我尝试添加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
中是相同的。但是我没有得到任何数据。
在查询结果匹配之前,我是否必须修剪字符串或以某种方式操纵它们?
答案 0 :(得分:1)
您的联接语法错误。查询只能有一个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';