Mysql SQL JOIN:只是无法理解它们
现在,我知道这个与Mysql SQL JOIN:只是无法理解它们,mysql,join,Mysql,Join,现在,我知道这个与JOIN相关的问题已经被问过很多次了。我看了很多。但我还是不清楚。我也读过这些书:但是没有,它仍然没有帮助 我确实从数学上理解静脉图,但无法掌握JOIN背后的基本概念 假设我有两张桌子 tbl_书籍说明: | BOOKID | BOOKNAME | BOOKREVIEW | AUTHORID | ------------------------------------------------ | 1 | SQL Basics | Cool |
JOIN
相关的问题已经被问过很多次了。我看了很多。但我还是不清楚。我也读过这些书:但是没有,它仍然没有帮助
我确实从数学上理解静脉图,但无法掌握JOIN
背后的基本概念
假设我有两张桌子
tbl_书籍说明:
| 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 |
我想为我的网站编写搜索引擎脚本
因此,当用户以$searchTerm
的身份输入Tom
时,我希望程序返回由Tom
编写的书的名称。同时,用户还可以输入Good
。这一次,查询应该再次返回图书的名称。所以,我想做一些像这样的事情
SELECT bookname FROM tbl_bookdescription MATCH(bookReview) AGAINST('$searchTerm')`
然后将此表与某物(与authorName和$searchterm匹配的某物)合并
现在,有两个问题:
这个问题对吗?它会给我想要的结果吗
我应该在代码中写什么来代替某些东西
。我想我必须将两个表(不确定)连接起来。不知道我该怎么加入
感谢您的帮助。尝试此查询
SELECT
a.*
FROM
tbl_bookdescription a
INNER JOIN
tbl_authordescription b
ON
a.authorid = b.authorid
WHERE
b.authorname=''
如果只使用一个搜索词进行搜索,则查询可能如下所示
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%'
如果用“Tom”替换searchterm
,您将得到
| BOOKID | BOOKNAME | BOOKREVIEW | AUTHORID | AUTHORNAME |
------------------------------------------------------------
| 1 | SQL Basics | Cool | 1 | Tom |
|BOOKID | BOOKNAME | BOOKREVIEW | AUTHORID | AUTHORNAME|
------------------------------------------------------------
|1 | SQL基础|酷| 1 |汤姆|
现在,如果它是“好的”,那么
| BOOKID | BOOKNAME | BOOKREVIEW | AUTHORID | AUTHORNAME |
-------------------------------------------------------------
| 2 | PHP Basics | Good | 2 | Jerry |
| 4 | HTML Basics | Very Good | 3 | Phil |
|BOOKID | BOOKNAME | BOOKREVIEW | AUTHORID | AUTHORNAME|
-------------------------------------------------------------
|2 | PHP基础|好| 2 | Jerry|
|4 | HTML基础知识|非常好| 3 |菲尔|
这是演示你能告诉我这里什么是a
和什么是b
吗?然后再回答一个问题。我们不使用作为我们想要给某个东西赋予别名吗?这两个选项都是允许的,您也可以直接赋予别名而不使用asCn我也这样加入第三个表?我不知道还有一个叫做SQLFIDLE的东西:)您只是在这里使用加入。是哪一家<代码>内部联接
?如果我有另一个表怎么办。。我也可以这样加入它吗?@NavneetSaini如果你只使用join
它意味着它是内部连接。如果你想使用一个外部联接,你需要明确地说LEFT
,RIGHT
,FULL
(虽然MySql没有实现FULL
join)。@NavneetSaini如果你只想从tbl_bookdescription中选择列,那么从SELECT
子句中删除a.
。你把它放在那里,这样你就可以看到作者的名字。
| BOOKID | BOOKNAME | BOOKREVIEW | AUTHORID | AUTHORNAME |
-------------------------------------------------------------
| 2 | PHP Basics | Good | 2 | Jerry |
| 4 | HTML Basics | Very Good | 3 | Phil |