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 |