使用外键进行MySQL查询

时间:2015-04-29 12:11:33

标签: php mysql sql

我有以下相关表格如下所示。

~~~~articles~~~~~~      ~~~~categories~~~~         ~~~user_categ~~~    ~~users~~~
|  id_articles    |      |  c_id          |       |   user_cat_id  |  _|_user_id |
|  article_title  |     _|_ category_id   |_____  |   user_id_fk   |_/ |user_name|
|  article_content| _ -  |  category_name |     \_|__category_id_fk|   |user_pw  |
|  category_id    |/     |________________|       |________________|   |_________| 
|_________________|

现在在我的user_categories表中,假设我有以下数据。

| user_id_fk | cat_id_fk |
-------------------------
| 2          | 2.1       |
| 2          | 3.1       |
| 2          | 4.1       |
| 3          | 2.4       |
-------------------------

现在,我想在MySQL中进行查询,以便 user_id_fk 2获取article_title,article_content from articles table 及其各自的类别,例如 2.1,3.1和4.1

我尝试使用内部联接进行一些查询但是我没有成功获得我想要的结果。

希望我很清楚。

2 个答案:

答案 0 :(得分:4)

您可以使用子查询进行此操作。例如:

SELECT article_title, article_content 
FROM articles 
WHERE category_id IN (
  SELECT category_id_fk FROM user_categories WHERE user_id_fk = 1
)

与join相同的例子:

SELECT article_title, article_content 
FROM articles 
JOIN user_categories ON category_id = category_id_fk
WHERE user_id_fk = 1

答案 1 :(得分:2)

会这样做吗?

SELECT article_title,article_content 
FROM articles
WHERE category_id IN
(
  SELECT category_id
  FROM user_categories
  WHERE user_id_fk = 2
)