首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用外键进行MySQL查询搜索

使用外键进行MySQL查询搜索
EN

Stack Overflow用户
提问于 2018-07-24 04:31:20
回答 2查看 417关注 0票数 3

我的数据库中有两个表,tb_devicetb_label,它们包含如下内容:

代码语言:javascript
复制
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_labeltb_label。我想搜索标签名,比如samsungappledell,而不是数字。我的搜索代码:

代码语言:javascript
复制
$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,但结果是:

代码语言:javascript
复制
      3      |   A777  |    2    |  test3

说明:dellid编号3,结果显示来自tb_deviceid number 3。有什么解决办法来显示正确的结果吗?

抱歉英语不太好

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2018-07-24 04:46:08

您在查询中错过了b.label

代码语言:javascript
复制
 $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
        ";
票数 3
EN

Stack Overflow用户

发布于 2018-07-24 04:53:24

我认为您应该只有WHERE for tb_label.label =(用户输入变量: Dell)

我相信你想做一个

代码语言:javascript
复制
INNER JOIN tb_label
ON tb_device.label = tb_label.id
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/51490480

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档