【发布时间】:2018-08-16 11:36:56
【问题描述】:
我正在尝试进行从 4 个表返回数据的查询,当我尝试添加一些附加条件时,问题就出现了。该查询适用于 LEFT JOIN 没有条件的 4 个表,但是当我输入 LIKE 条件时,结果没有任何变化。结果必须是仅以 40.95 开头的带有“lat”的选择
这段代码正在运行:
if($resultset=getSQLResultSet("SELECT name, lat, lng, description,
COALESCE(section, 0), COALESCE(AVG(score), 0) FROM places P LEFT JOIN ratings R ON P.id=R.place LEFT JOIN ratings_sections RS ON R.id=RS.rating LEFT JOIN categories C ON P.type=C.type GROUP BY P.name, RS.section ORDER BY P.name, RS.section")){
while ($row = $resultset->fetch_array(MYSQLI_NUM)){
echo json_encode($row);
}
}
但是当我设置 LIKE 条件时没有任何变化:
if($resultset=getSQLResultSet("SELECT name,lat, lng, description, COALESCE(section, 0), COALESCE(AVG(score), 0) FROM places P LEFT JOIN ratings R ON P.id=R.place AND P.lat LIKE '40.95%' LEFT JOIN ratings_sections RS ON R.id=RS.rating LEFT JOIN categories C ON P.type=C.type GROUP BY P.name, RS.section ORDER BY P.name, RS.section")){
while ($row = $resultset->fetch_array(MYSQLI_NUM)){
echo json_encode($row);
}
}
【问题讨论】:
-
从不在
FROM子句中使用逗号。 始终使用正确、明确、标准JOIN语法。 -
也永远不要问一个问题,说明“不起作用”。明确说明它是如何不起作用的。
-
您在两个选择之间使用 UNION 来返回不同的列数(和类型)......只有当所涉及的选择包含相同的数字和列的 tyoe 时,联合才起作用 .. 以相应的顺序跨度>
-
@scaisEdge 既不是 UNION ALL?那么,如何加入两个具有不同列和一些 LIKE 条件的表?因为 LEFT JOIN 它也不适合我
-
你应该更新你的问题并添加一个适当的数据样本和预期的结果..(联合所有返回所有行..联合只不同的行)所以你对联合所有的问题是不适用的..告诉我们你真正需要什么..不要告诉我们..不工作..
标签: php mysql sql left-join sql-like