首页 文章

SQL SELECT取决于多个变量和表

提问于
浏览
1

我正在尝试创建 SELECT 查询,但问题是我得到了适合不同表的多个变量 .

为了说清楚,我将展示数据库表:

Category

CatID
   CatName

Subcategory

CatID
   SubCatID
   SubCatName

Company

CompanyID
    CompName
    SubCat

Model

CompID
   ModelID
   ModelName

Posts

PostID
   ModelID

现在,我得到一些参数,如:Cat,Subcat,Category,ModelID和Name,我需要的是选择适合参数的PostID的所有匹配结果 .

例如,如果我得到以下参数:

Cat = "Electronics"
Subcat="Computers"
Company="Apple"
ModelName="Macbook Air"
Keyword="new"

我需要获得 Posts 的以下结果,其中类别等于Cat变量,子类别与SubCat变量匹配等等 . 除了使用 %Like% 过滤结果我得到的关键字变量 .

不幸的是,经过多次尝试解决它后,我失败了 . 尝试使用内部JOIN以不同的方式,但它没有工作 .

如果有人可以帮助我,我真的很感激,因为我不知道如何继续这一点,我没有很多时间,直到我需要完成这个项目 .

提前致谢

2 回答

  • 0
    Select posts.*
    from Posts inner join
        model on posts.modelId = model.modelId and model.ModelName = 'Macbook Air' inner join
        Company on model.compID = company.companyID and Company.CompName = 'Apple' inner join
        Subcategory on company.subCat = Subcategory.SubcatID and subcategory.subcatName ='Computers' inner join
        Category on subcategory.catID = category.catID and category.CatName = 'Electronics'
    where posts.keywordField like '%new%'
    

    我必须在那里做一些假设,比如你要搜索关键字的字段 . 但是你得到了一般的想法:在每个内部联接中你可以指定一个限制你的结果的附加条件,并以这种方式应用你的查询的参数 .

  • 0

    实现此功能的一种可能方法是创建一个View,这样您只能搜索一个表 .

    Select c.*, sc.SubCatName, com.*, ModelName, p.*
    from Category c 
    join Subcategory sc on c.CatID = sc.CatID
    join Company com on sc.SubCatID = com.SubCatID
    join Model m on com.CompID = com.CompID
    join Posts p on p.ModelID = m.ModelID
    

相关问题