我有一个 PHP 网站,其中有一个表,该表通过带有输入框的表单打印 MySQL 数据库中的搜索结果。我使用这个 SQL 语法,效果很好。我可以在一个字段中搜索以获取 location.room_name 和 users.user_name 的结果:
选择:
SELECT computers.*, location.room_name AS location
FROM computers
LEFT JOIN location ON computers.location = location.id
LEFT JOIN users ON computers.user_1 = users.id".
" ".$searchCriterias."
ORDER BY id
地点:
$searchCriterias =
"WHERE
location.room_name LIKE '%".$s."%' OR
users.user_name LIKE '%".$s."%'
";
$s
是搜索表单中的字符串。
问题是我有computers.user_1、computers.user_2和computers.user_3,它们都对应于上面的语法中的users.id。当我搜索用户名时,我想将其与 user_1、user_2 和 user_3 匹配,但我无法让它工作。我只能将其与一个(在本例中为 user_1)匹配。
我尝试在computers.user_2 = users.id上添加LEFT JOIN用户
并收到此错误消息:不唯一的表/别名:'users'
还有...
LEFT JOIN users AS u1 ONcomputers.user_1 = users.id
对于所有三个并获取此消息:“on 子句”中的未知列“users.id”。
为什么不起作用?
最佳答案
正如您所说,computers
表中有 3 列,然后在连接时尝试执行以下操作。还添加了 GROUP BY
以获得每个用户的唯一结果。
$query = "SELECT computers.*, location.room_name AS location
FROM computers
LEFT JOIN location ON computers.location = location.id
LEFT JOIN users ON (computers.user_1 = users.id
OR computers.user_2 = users.id
OR computers.user_3 = users.id ) ".
$searchCriterias . " GROUP BY users.id ORDER BY id";
关于php - LEFT JOIN 在 'on 子句中返回不唯一的表/别名和未知列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35596446/