MYSQL查询3个表,其中匹配

MYSQL查询3个表,其中匹配,mysql,Mysql,我正在尝试运行mysql查询以匹配关键字。我成功地对单个表运行了查询 代码如下: SELECT * FROM PART_DESC_TABLE WHERE MATCH (`DEEP_STD_SOCKET`,`DESCRIPTION_FB`,`DESCRIPTION_MKT`,`DESCRIPTION`,`DRIVE`,`POINT`,`SIZE`,`TOOL_CODE`) AGAINST ("12MM" IN NATURAL LANGUAGE MODE) 我需要在上面的查询中包含另外两个表,

我正在尝试运行mysql查询以匹配关键字。我成功地对单个表运行了查询

代码如下:

SELECT * 
FROM PART_DESC_TABLE 
WHERE MATCH (`DEEP_STD_SOCKET`,`DESCRIPTION_FB`,`DESCRIPTION_MKT`,`DESCRIPTION`,`DRIVE`,`POINT`,`SIZE`,`TOOL_CODE`) AGAINST ("12MM" IN NATURAL LANGUAGE MODE)
我需要在上面的查询中包含另外两个表,这两个表(其他两个表)都有3列,其中第一个表有8列

到目前为止,我尝试过的查询很少失败。比如下面这个:

SELECT
    TOOL_COMPANY_NAME,
    DEEP_STD_SOCKET,
    DESCRIPTION_FB,
    DESCRIPTION_MKT,
    DESCRIPTION,
    DRIVE,
    POINT,
    SIZE,
    TOOL_CODE,
    PART_NUMBER
FROM
    MANUFACTURERS,
    PART_DESC_TABLE,
    PART_NUMBER_TABLE
WHERE
    MATCH(
        `DEEP_STD_SOCKET`,
        `DESCRIPTION_FB`,
        `DESCRIPTION_MKT`,
        `DESCRIPTION`,
        `DRIVE`,
        `POINT`,
        `SIZE`,
        `TOOL_CODE`,
        `TOOL_COMPANY_NAME`,
        `PART_NUMBER`
    ) AGAINST('12MM' IN NATURAL LANGUAGE MODE);
结果是

returns:  #1210 - Incorrect arguments to MATCH
我尝试过的另一个查询清楚地表明列的数量不是偶数(使用UNION),这是有意义的,但是设置一些伪值(即NULL为column1,2,3…)对我来说仍然不起作用

输出以显示选择表

CREATE TABLE MANUFACTURERS ( MFG_NO int(3) DEFAULT NULL, ABBREVIATION varchar(10) DEFAULT NULL, TOOL_COMPANY_NAME varchar(17) DEFAULT NULL, FULLTEXT KEY ABBREVIATION (ABBREVIATION,TOOL_COMPANY_NAME) ) ENGINE=InnoDB DEFAULT CHARSET=utf8

CREATE TABLE PART_DESC_TABLE ( INDEX_NUMBER int(2) DEFAULT NULL, DESCRIPTION varchar(21) DEFAULT NULL, DESCRIPTION_FB varchar(10) DEFAULT NULL, DESCRIPTION_MKT varchar(10) DEFAULT NULL, DRIVE varchar(3) DEFAULT NULL, POINT varchar(2) DEFAULT NULL, DEEP_STD_SOCKET varchar(17) DEFAULT NULL, SIZE varchar(4) DEFAULT NULL, TOOL_CODE varchar(4) DEFAULT NULL, FULLTEXT KEY DEEP_STD_SOCKET (DEEP_STD_SOCKET,DESCRIPTION_FB,DESCRIPTION_MKT,DESCRIPTION,DRIVE,POINT,SIZE,TOOL_CODE) ) ENGINE=InnoDB DEFAULT CHARSET=utf8 

CREATE TABLE PART_NUMBER_TABLE ( INDEX_NUMBER int(2) DEFAULT NULL, ABBREVIATION varchar(4) DEFAULT NULL, PART_NUMBER varchar(11) DEFAULT NULL, FULLTEXT KEY ABBREVIATION (ABBREVIATION,PART_NUMBER) ) ENGINE=InnoDB DEFAULT CHARSET=utf8
还要进一步解释一切

我有一个零件号表,基本上可以容纳无限数量的零件号。三列。一个是索引号,另一个是零件号,第三个是制造商缩写(将与制造商表匹配以获得制造商的全名。因此,基本上垂直对齐此数据,我可以有多个零件号,具有相同的索引号,基本上属于零件描述表中的一个项目或一行)

接下来,我有一个零件描述表。我有一个索引号,它应该将索引与零件号表与具有项目属性(例如大小、点、多个描述)的其他列相匹配

最后我有一个制造商表,它有一个制造商编号,制造商缩写,然后第三个是制造商全名

我看到了使用连接条件而不是使用匹配的建议。我也看到了匹配行的叉积问题


有人可以给我一些指导,告诉我如何在这种情况下使用join来实现。

你有关于
工具公司名称
零件号
的全文索引吗?你没有
联合
,所以我看不出你的最后一段与此查询有什么关系。无关的问题:你需要一个加入条件对3个表进行排序,否则您将得到所有匹配行的叉积。您真的需要在公司名称和零件号中查找
12MM
?可能这些列应该是连接条件,而不是
MATCH()中的列
条件。您能否为问题中的3个表中的每个表添加
SHOW CREATE TABLE
的输出?