MYSQL连接3个表,其中一个是链接表

MYSQL连接3个表,其中一个是链接表,mysql,join,inner-join,Mysql,Join,Inner Join,你可能会认为这很容易找到,但经过大量的搜索,我找不到一个合适的例子,可能是因为我使用了错误的关键字进行搜索。我确实意识到这是非常基本的,但我尝试了太多的变化,我就是不明白,我看到的很多例子都有a.tablename和b.tablename,这让人很困惑,虽然我确实打算进一步阅读MYSQL,因为我只知道一些基本知识,但我只是想摆脱困境,这样我现在就可以让我当前的代码正常工作 下面是我的SQL连接,它严重失败: SELECT faq.faq_title FROM faq, category INNE

你可能会认为这很容易找到,但经过大量的搜索,我找不到一个合适的例子,可能是因为我使用了错误的关键字进行搜索。我确实意识到这是非常基本的,但我尝试了太多的变化,我就是不明白,我看到的很多例子都有a.tablename和b.tablename,这让人很困惑,虽然我确实打算进一步阅读MYSQL,因为我只知道一些基本知识,但我只是想摆脱困境,这样我现在就可以让我当前的代码正常工作

下面是我的SQL连接,它严重失败:

SELECT faq.faq_title
FROM faq, category
INNER JOIN faq_link_category ON faq_link_category.category_id = category.category_id
WHERE faq_link_category.category_id =6
基本上我有三张桌子

faq table
---------
faq_id
faq_title

category table
---------
category_id
category_name

faq_link_category
---------
faq_id
category_id
每个FAQ都可以有多个相关类别,因此我将其设置为基本上可以搜索以下内容:

显示类别为6的所有常见问题解答标题

但是我得到的结果是500个,而不是4个或5个

简言之,我来到了一个页面,上面写着这样的东西 index.php?=6


因此,我想找到该类别的所有常见问题解答,其中category_id=x在我的示例中正好是6。

您需要的是外部联接:

SELECT faq_title
FROM faq f
JOIN faq_link_category flc
ON f.faq_id = flc.faq_id
JOIN category c
ON flc.category_id = c.category_id
WHERE flc.category_id = 6
试试这个:

SELECT `faq`.`faq_title`
FROM `faq`
INNER JOIN `faq_link_category` ON `faq_link_category`.`category_id` = `faq`.`faq_id`
INNER JOIN `category` ON `faq_link_category`.`category_id` = `category`.`category_id`
WHERE `faq_link_category`.`category_id` = 6

谢谢,c、f和flc代表什么?欢迎您参考。它们只是一个别名,可以使键入变得更短,从而更容易和更不容易出错。