我的数据库中有两个表,tb_device和tb_label,它们包含如下内容:
tb_device
id (AI) | type | label | etc
-------------------------------------
1 | A123 | 1 | test
2 | A561 | 3 | test2
3 | A777 | 2 | test3
4 | A222 | 3 | test4
tb_label
id (AI) | label
-------------------
1 | Samsung
2 | Apple
3 | Dell我已经创建了CRUD (PHP),它显示tb_devices。这个CRUD在每个列上都有一个搜索表单。其他列用于搜索,但标签列不起作用,因为它包含来自tb_label的tb_label。我想搜索标签名,比如samsung,apple,dell,而不是数字。我的搜索代码:
$sql = "SELECT *
FROM tb_device a, tb_label b
WHERE
type LIKE '%".@$_POST['type']."%' AND
(a.label=b.id AND b.label LIKE '%".@$_POST['label']."%') AND
etc LIKE '%".@$_POST['etc']."%'
ORDER BY type
";我尝试输入dell,但结果是:
3 | A777 | 2 | test3说明:dell有id编号3,结果显示来自tb_device的id number 3。有什么解决办法来显示正确的结果吗?
抱歉英语不太好
发布于 2018-07-24 04:46:08
您在查询中错过了b.label
$sql = "SELECT a.*, b.label
FROM tb_device a, tb_label b
WHERE
a.type LIKE '%".@$_POST['type']."%' AND
(a.label=b.id AND b.label LIKE '%".@$_POST['label']."%') AND
etc LIKE '%".@$_POST['etc']."%'
ORDER BY a.type
";发布于 2018-07-24 04:53:24
我认为您应该只有WHERE for tb_label.label =(用户输入变量: Dell)
我相信你想做一个
INNER JOIN tb_label
ON tb_device.label = tb_label.idhttps://stackoverflow.com/questions/51490480
复制相似问题