我的数据库中有2个表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
并且我已经创建了显示tb_devices
的CRUD表单(PHP)。并且此CRUD在每列上都有一个搜索表单。其他列可用于搜索,但标签列不起作用,因为其中包含id
中的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
,结果显示id
中3
数字tb_device
。有什么解决方案可以显示正确的结果?
对不起,英语不好
答案 0 :(得分:3)
您在查询中错过了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
";
答案 1 :(得分:0)
我相信您应该只在tb_label.label =(您的用户输入变量:Dell)的地方
我相信你想做
INNER JOIN tb_label
ON tb_device.label = tb_label.id