2014-03-25 45 views
0

你会认为这将很容易找到,但经过大量的搜索后,我找不到一个适合的例子,可能是因为即时通讯使用错误的关键字搜索。我意识到这是非常基本的,但我已经尝试了这么多的变化,我只是无法得到它,并且很多我看到的例子都有a.tablename和b.tablename,这只是令人困惑,而我确实想要阅读MYSQL进一步,因为我只是知道基础知识即时只是想摆脱一个漏洞,所以我可以得到我目前的代码工作。MYSQL加入3个表,其中一个是链接表

这里是我的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 

请告诉我发生的事情是每一个常见问题可以有多个相关的1类,所以我将它设置这样一来,我就可以基本上做到上的线路搜索的东西:

显示我的所有常见问题职称,其中类别= 6

但即时得到像500个结果,而不是4或5

总之IM到达的页面上有这样的事情 的index.php?= 6

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

回答

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 
+0

感谢,仅供参考什么是C,F,代表 – user1547410

+0

欢迎您FLC。它们只是缩短打字时间的一种方式,因此更容易且不易出错。 – George

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