多表

2011-04-10 24 views
0

MySQL的全文搜索我有2个表:多表

 
"product_info" table: 
id  name   price 
========================== 
1  LG Monitor  $250 


"product_detail_info" table: 
id product_info_id detail_title title_position  content 
======================================================================== 
1  1     Features  2     bla bla bla 
2  1     Specification 1     bla bla bla 

我怎样才能既2点表中的数据联系起来,共同为MySQL的全文检索搜索,并有将结果返回给是产品的名字“ product_info“表?

谢谢。

+0

您是否在使用ORM? – syrion 2011-04-10 13:20:27

+0

我已将您的两个未注册帐户合并为一个。您现在可以编辑您的问题或在个别答案下留下意见。我会将你的'答案'转换为评论,但是我不知道哪一个是为了什么答案。 – 2011-04-12 12:19:48

回答

1

mysql全文搜索功能会给你想要的 - http://dev.mysql.com/doc/refman/5.0/en/fulltext-search.html。你只需要让你的表正确设置就可以了。

SELECT product_info.name FROM product_info 
LEFT JOIN product_detail_info 
ON product_info.id = product_detail_info.product_info_id 
WHERE MATCH (content) AGAINST (your_search_string) 
+0

非常感谢您的回复。但是我怎样才能为2个表格编写匹配(内容)? 我试图写下如下,它返回错误: match(product_info.name,product_info_price,product_detail_info.detail_title,product_detail_info.content) – 2011-04-10 14:06:20

+0

通读我已链接的文档,您将需要创建一个' FULLTEXT'索引在你想查询它们之前要与'MATCH'对齐的字段,它只适用于CHAR,VARCHAR或TEXT列。 – 2011-04-10 14:23:28

+0

是的,我知道需要创建全文索引。但是如何在查询中写入“MATCH(content)”?如果只有一个表格,它可以写成“MATCH(名称,价格)”。如何写2个表格?谢谢。 – 2011-04-10 16:10:56

2
SELECT 
    pi.name 
FROM 
    product_info pi 
    INNER JOIN product_detail_info pdi ON pdi.product_info_id = pi.id 
WHERE 
    pdi.content MATCH <your condition>