查询一个表,从另一个表中获取名称

时间:2017-07-04 15:23:46

标签: php mysql sql database

我的数据库中有3个表,分类,子类别和文章。 我的文章表包含了类别ID和子类别ID的列,它们是表类别和子类别的外键。

我的问题是,如何才能将类别和子类别的名称仅作为ID存储在我的文章表中。

我想我需要一种子查询或加入。

这就是我所拥有的:

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

当我在mysql中执行此代码时,没有错误,但我收到0结果。所有表都包含一些数据。

2 个答案:

答案 0 :(得分:1)

改变这个:

where SubcategoryID = (select SubcategoryName from Subcategories 

到这个

where SubcategoryID in (select SubcategoryID from Subcategories 

变化是

  1. 等号现在是单词in
  2. 子查询正在选择SubcategoryID而不是SubCategoryName

答案 1 :(得分:0)

使用联接:

选择a.ArticleTitle AS ArticleTitle, c.CategoryName AS CategoryName,s.SubcategoryName AS SubcategoryName

FROM

文章a关于a.CategoryID = c.ID的JOIN类别c关于a.SubcategoryID = s.ID的子类别

WHERE s.SubcategoryName =' info';