1

现在,我知道这个问题JOIN已经被问过很多次了。我经历了很多。但我仍然不清楚。我也阅读了这些文章:http: //www.codeproject.com/Articles/33052/Visual-Representation-of-SQL-Joins#_commentshttp://www.codinghorror.com/blog/2007/10/a- visual-explanation-of-sql-joins.html但不,它仍然没有帮助。

我确实在数学上理解静脉图,但无法掌握背后的基本概念JOIN

假设我有两张桌子。

tbl_bookdescription:

| 书号 | 书名 | 书评 | 作者 |
------------------------------------------------
| 1 | SQL 基础 | 酷 | 1 |
| 2 | PHP 基础 | 好 | 2 |
| 3 | AJAX 基础 | 精湛 | 2 |
| 4 | HTML 基础 | 很好 | 3 |

tbl_authordescription

| 作者 | 作者姓名 |
-------------------------
| 1 | 汤姆 |
| 2 | 杰瑞 |
| 3 | 菲尔 |

我想为我的网站编写一个搜索引擎脚本

因此,当用户输入Tomas时$searchTerm,我希望程序返回由Tom. 同时,用户也可以输入Good. 这次查询应该再次返回书名。所以,我想做这样的事情

SELECT bookname FROM tbl_bookdescription MATCH(bookReview) AGAINST('$searchTerm')` 

然后UNION这个表与SOMETHING(匹配 authorName 与 $searchterm 的东西)。

现在,两个问题:

  1. 这个查询对吗?它会给我想要的结果吗?

  2. 我应该在代码中写什么来代替SOMETHING. 我想我将不得不去JOIN两张桌子(不确定)。而且不知道应该怎么加入。

帮助表示赞赏。

4

2 回答 2

1

试试这个查询

SELECT 
    a.* 
FROM 
    tbl_bookdescription a
INNER JOIN 
    tbl_authordescription b
ON 
    a.authorid = b.authorid 
WHERE 
    b.authorname=''
于 2013-06-13T04:02:37.830 回答
1

如果您只使用一个搜索词进行搜索,那么您的查询可能看起来像

SELECT b.*, a.*
  FROM tbl_bookdescription b JOIN tbl_authordescription a
    ON b.authorID = a.authorID
 WHERE b.bookName   LIKE '%searchterm%'
    OR b.bookReview LIKE '%searchterm%'
    OR a.authorName LIKE '%searchterm%'

如果你searchterm用“汤姆”代替,你会得到

| 书号 | 书名 | 书评 | 作者 | 作者姓名 |
-------------------------------------------------- ----------
| 1 | SQL 基础 | 酷 | 1 | 汤姆 |

现在,如果它是“好”,那么

| 书号 | 书名 | 书评 | 作者 | 作者姓名 |
-------------------------------------------------- ------------
| 2 | PHP 基础 | 好 | 2 | 杰瑞 |
| 4 | HTML 基础 | 很好 | 3 | 菲尔 |

这是SQLFiddle演示

于 2013-06-13T04:05:41.063 回答