代码之家  ›  专栏  ›  技术社区  ›  anon

字符串字段上的联接不返回匹配项

  •  -1
  • anon  · 技术社区  · 7 年前

    我有一个带有两个内部联接的查询。一切正常,我从数据库中获得所需的数据,直到我尝试添加 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 . 然而,我没有得到任何数据。

    在查询结果匹配之前,我是否必须修剪字符串或以某种方式操纵它们?

    1 回复  |  直到 7 年前
        1
  •  1
  •   JNevill    7 年前

    您的联接语法错误。查询只能有一个WHERE子句。您想使用 ON 子句指定联接条件。

    $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';