我有这个SQL查询
SELECT entries.*, categories.name as name_cat, areas.name as name_area, sub_categories.name as name_sub
FROM entries, areas, sub_categories, categories
WHERE sub_categories.id= entries.id_sub
AND **areas.id = entries.area**
AND categories.id = entries.id_cat
ORDER BY entries.id DESC
它运作良好,但我确实在 entries.area 中有一些BLANK字段..这些字段没有结果..
我在查询中尝试了一些更改,但有些人给了我结果,而有些给了我更少的东西给了我正确的答案
答案 0 :(得分:4)
2015年已经到了。过去的时间是放弃了连接运算符的旧式逗号语法,而是使用JOIN
关键字。使用JOIN
关键字,我们可以将谓词(条件)从WHERE
子句移动到ON
子句。
使用JOIN
关键字,我们可以指定"外部联接"包括其他关键字。
例如,包括关键字LEFT
(在JOIN
之前)指定查询应该从" left"中的表返回行。即使右侧表格中没有匹配的行也是如此。
SELECT entries.*
, categories.name AS name_cat
, areas.name AS name_area
, sub_categories.name AS name_sub
FROM entries
LEFT
JOIN areas
ON areas.id = entries.area
LEFT
JOIN sub_categories
ON sub_categories.id= entries.id_sub
LEFT
JOIN categories
ON categories.id = entries.id_cat
WHERE 1=1
ORDER BY entries.id DESC
可以省略行WHERE 1=1
...我只是为了显示WHERE
子句的位置而包含它,如果需要的话。