2015-04-01 37 views
1

我试图创建一个SELECT查询,但这里的问题是,我得到多个变量适用于不同的表。SQL SELECT取决于多个变量和表格

为了明确这一点,我将介绍数据库表:

类别

CatID 
    CatName 

子目录

CatID 
    SubCatID 
    SubCatName 

公司

CompanyID 
    CompName 
    SubCat 

型号

CompID 
    ModelID 
    ModelName 

帖子

PostID 
    ModelID 

现在,我得到这样的一些参数:猫,SUBCAT,类别,ModelID和姓名,而我需要的是选择适合参数的所有PostID匹配结果。

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

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

我需要得到帖子以下结果,其中的类别等于猫变量和子类别相匹配的SUBCAT变量等..并且除了使用%Like%来筛选我得到的关键字变量的结果。

不幸的是我有很多的尝试试图解决它的失败后。尝试以不同的方式使用内部JOIN,但它不起作用。

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

在此先感谢

+0

是不是一个类别只是一个子类没有父?你需要两张桌子吗?无论如何,我会在同一时间写一个查询,并告诉我们你到目前为止,我们可以帮助您找到问题 – 2015-04-01 20:10:22

+0

好吧,这是什么,但我确实需要两个表在网站的另一个使用..我不得不多次尝试导致没有解决方法或方式,所以它是无用的发布..虽然,我只是注意到有人回答这个问题,所以我会试一试,告诉你它是否工作。 – 2015-04-01 20:26:58

+0

哪个RDBMS是为了这个?请添加一个标签来指定您是使用'mysql','postgresql','sql-server','oracle'还是'db2' - 或者其他的东西。 – 2015-04-01 20:36:27

回答

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

非常感谢!完美工作。 – 2015-04-01 21:22:06

0

一种可能的方法,使这项工作将是创建一个视图,所以你只能有一个表来搜索对。

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

谢谢你的回应!我试图把这个嵌入到我的项目中,但是我有一些麻烦去理解什么是你的答案中出现的“p”变量,因为我们只能得到cat(c),subcat(sc),company(com )和模型(m)。谢谢 – 2015-04-01 20:34:37

+0

@SIOS_dev你有一个'职位'表,我用别名'p' – bowlturner 2015-04-01 20:36:12