我已經按照我的數據庫表:courses
(體育類的整個數據),coursedata
(與courses.title
和courses.description
副本 - 需要FULLTEXT
指數/相關搜索),sports
(體育的列表),並courses_sports
(關聯表) - 見下文。如何根據MySQL中的相關性將兩個表中的行彼此映射?
現在我想將的相關性映射到體育項目並自動填入courses_sports
。它需要兩個步驟。
收集與指定
SELECT
的數據。將數據寫入關聯表。
這篇文章是關於第一步。我有一些麻煩寫下查詢。我已經試過:
SELECT
courses.id,
sports.id
FROM
courses
JOIN
coursedata ON coursedata.id = courses.coursedata_id
JOIN
sports ON MATCH (coursedata.title) AGAINST (sports.title) > 0
-- The test with
-- sports ON MATCH (coursedata.title) AGAINST ('Basketball') > 0
-- works.
這查詢不工作:
錯誤代碼:1210
不正確的論據反對
如何正確地實現這種映射?
其他信息:相關的表
courses
Field Type Key
------------------ --------------- ------
id int(11) PRI
title varchar(100)
description varchar(1000)
coursedata_id int(11) UNI
...
coursedata
Field Type Collation Null Key
----------- ------------- --------------- ------ ------
id int(11) (NULL) NO PRI
title varchar(100) utf8_general_ci YES MUL
description varchar(1000) utf8_general_ci YES MUL
CREATE TABLE `coursedata` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`title` varchar(100) DEFAULT NULL,
`description` varchar(1000) DEFAULT NULL,
PRIMARY KEY (`id`),
FULLTEXT KEY `searchcoursetitle` (`title`),
FULLTEXT KEY `searchcoursedescription` (`description`)
) ENGINE=MyISAM AUTO_INCREMENT=5208 DEFAULT CHARSET=utf8
sports
Field Type Collation Null Key
-------- --------------------- --------------- ------ ------
id int(11) (NULL) NO PRI
title varchar(50) utf8_general_ci NO
category varchar(50) utf8_general_ci YES
type enum('sport','dance') utf8_general_ci YES
courses_sports
Field Type Collation Null Key
--------- ------- --------- ------ ------
course_id int(11) (NULL) NO PRI
sport_id int(11) (NULL) NO PRI
你是課程表沒有coursedata_id字段使聯接coursedata ON coursedata.id = courses.coursedata_id。順便說一句,體育和課程(或coursedata)之間的共同領域是什麼?當然和coursedata完全一樣嗎? – Edper 2013-04-20 01:15:28
「_you're courses table does not have coursedata_id field_」 - 對不起,這是一個錯字。請參閱編輯的文章 – automatix 2013-04-20 01:26:07
「_順便說一下體育和課程之間的共同領域_」這兩個表之間沒有共同的領域。這是通過關聯表「courses_sports」實現的多對多。 – automatix 2013-04-20 01:28:33