2017-07-04 81 views
0

我在我的数据库中有3个表,分类,子类别和文章。 “我的文章”表中包含列分类ID和子类别ID的列,这些是表类别和子类别的外键。查询一个表,从另一个表中获取名称

我的问题是,我怎样才能得到仅存储在我的文章表中的ID的类别和子类别的名称。

我想我需要一种子查询或连接。

以下是我有:

SELECT ArticleTitle 
     ,CategoryID 
     ,SubcategoryID 
    FROM Articles 
WHERE SubcategoryID = 
     (SELECT SubcategoryName 
      FROM Subcategories 
      WHERE SubcategoryName = 'info' 
     )  

当我执行在MySQL的代码,有没有误差修改,但我得到0的结果。所有表都包含一些数据。

+0

个人建议:尝试格式化您的SQL语句 - 看看[SQL风格指南](http://www.sqlstyle.guide/) - 正确的格式化SQL语句可以帮助您解决问题并进一步简化所有更改为你和你的伙伴们 –

回答

1

改变这一点:

where SubcategoryID = (select SubcategoryName from Subcategories 

这个

where SubcategoryID in (select SubcategoryID from Subcategories 

的变化是

  1. 现在等号这个词in
  2. 子查询中选择的,而不是SubCategoryName
+0

谢谢,它的工作:) –

0

SubcategoryID使用连接:

SELECT a.ArticleTitle AS ArticleTitle, c.CategoryName AS类别名称,s.SubcategoryName AS SubcategoryName

FROM

文章a JOIN类别c on a.CategoryID = c.ID JOIN子类别s上a.SubcategoryID = s.ID

WHERE s.SubcategoryName ='info';

相关问题