2015-04-01 35 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