MYSQL查询3个表,其中匹配
我正在尝试运行mysql查询以匹配关键字。我成功地对单个表运行了查询 代码如下: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) 我需要在上面的查询中包含另外两个表,
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
的输出?