【发布时间】:2018-05-10 22:20:06
【问题描述】:
我正在使用 php/mysql 搜索家具网站。
我使用了这样一个简单的搜索查询:
$sql = "SELECT * FROM produitsoutdoor_new WHERE CONCAT(nom, dimensions, coloris, descriptif, composition, matiere, stock) LIKE '%$keyword%'";
但是当我尝试添加一些其他类似的表格时:
$sql = "SELECT * FROM produitsoutdoor_new, produitssalon, produitsdecoration WHERE CONCAT(nom, dimensions, coloris, descriptif, composition, matiere, stock) LIKE '%$keyword%'";
结果为空。知道在这种情况下我应该如何使用JOIN 吗?
【问题讨论】:
-
在 table2field = table1field 上使用 INNER JOIN 表
-
INNER JOIN将仅显示 ID 存在于所有 3 个表中的值。如果联接表中可能不存在值,请使用LEFT JOIN。 -
正确的方法是使用 UNION。此外,OP 的实际查询(他说不工作的那个)正在所有表之间执行笛卡尔计划。而且很可能是因为缺少别名而无法正常工作。
-
谢谢大家。当我读到“所有表的架构都已标准化”时……我明白了。这些表的列不同,因此无法正常工作。所以我正常化了,现在它就像一个魅力。