现在,我知道有多次询问与JOIN
相关的问题。我经历了很多。但它仍然不清楚。我也阅读了这些文章:http://www.codeproject.com/Articles/33052/Visual-Representation-of-SQL-Joins#_comments和http://www.codinghorror.com/blog/2007/10/a-visual-explanation-of-sql-joins.html但是没有,它仍然没有帮助。
我确实以数学方式了解静脉图,但无法抓住JOIN
背后的基本概念。
假设我有两张桌子。
tbl_bookdescription:
| BOOKID | BOOKNAME | BOOKREVIEW | AUTHORID | ------------------------------------------------ | 1 | SQL Basics | Cool | 1 | | 2 | PHP Basics | Good | 2 | | 3 | AJAX Basics | Superb | 2 | | 4 | HTML Basics | Very Good | 3 |
tbl_authordescription
| AUTHORID | AUTHORNAME | ------------------------- | 1 | Tom | | 2 | Jerry | | 3 | Phil |
我想为我的网站编写搜索引擎脚本
因此,当用户输入Tom
作为$searchTerm
时,我希望程序返回由Tom
编写的图书的名称。同时,用户还可以输入Good
。这次查询应该再次返回书名。所以,我想做这样的事情
SELECT bookname FROM tbl_bookdescription MATCH(bookReview) AGAINST('$searchTerm')`
然后UNION
此表包含SOMETHING
(与authorName相对于$ searchterm的内容)。
现在,有两个问题:
这个查询对吗?它会给我想要的结果吗?
我应该在代码中写下SOMETHING
。我想我必须JOIN
两个表(不确定)。不知道我该怎么加入。
帮助表示赞赏。
答案 0 :(得分:1)
尝试此查询
SELECT
a.*
FROM
tbl_bookdescription a
INNER JOIN
tbl_authordescription b
ON
a.authorid = b.authorid
WHERE
b.authorname=''
答案 1 :(得分: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
替换为'Tom',您将获得
| BOOKID | BOOKNAME | BOOKREVIEW | AUTHORID | AUTHORNAME | ------------------------------------------------------------ | 1 | SQL Basics | Cool | 1 | Tom |
现在,如果它是'好'那么
| BOOKID | BOOKNAME | BOOKREVIEW | AUTHORID | AUTHORNAME | ------------------------------------------------------------- | 2 | PHP Basics | Good | 2 | Jerry | | 4 | HTML Basics | Very Good | 3 | Phil |
这是 SQLFiddle 演示