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

时间:2014-03-25 03:21:04

标签: mysql join inner-join

您会认为这很容易找到,但经过大量搜索后我找不到合适的示例,可能是因为我使用错误的关键字进行搜索。我确实意识到这是非常基本的,但我已经尝试了很多变化,我只是无法得到它和我看到的很多例子都有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

基本上我有3张桌子

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

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

faq_link_category
---------
faq_id
category_id

发生的事情是,每个常见问题解答都可以有多个相关的类别,所以我这样设置,所以我基本上可以搜索以下内容:

告诉我所有类别= 6的常见问题解答

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

总之我到达一个有这样的东西的页面 的index.php?= 6

所以我想找到该类别的所有常见问题,其中category_id = x,在我的例子中恰好是6。

2 个答案:

答案 0 :(得分:2)

您需要的是外部联接:

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

答案 1 :(得分:0)

试试这个:

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