2016-04-25 75 views
0

我有這樣一種情況:元研究會返回一個單一的產品SKU,我會回來,像這樣的例子被過濾的結果:MySQL的 - 連接兩個查詢,第二個從第一

SELECT 
pr.SKU, 
pr.pkSKU, 
pr.ColorDescription, 
pr.CommonBrandName, 
pr.BaseModel 
FROM tbl_products AS pr WHERE pr.pkSKU = 160386 
ORDER BY pr.CommonBrandName, pr.SKU, pr.StandardColor 

但SKU可能有其他可用的備選顏色,它們通過在BaseModel鏈接,我需要寫像這樣一個新的查詢,以顯示這些還有,我知道我可以做:

SELECT 
pr.SKU, 
pr.pkSKU, 
pr.ColorDescription, 
pr.CommonBrandName, 
pr.BaseModel 
FROM tbl_products AS pr WHERE pr.BaseModel = "result from previous query" 
ORDER BY pr.CommonBrandName, pr.SKU, pr.StandardColor 

但我真的很想做的是將其組合成一個查詢,這可能嗎?

其次如果是我需要訂購,這樣的結果SKU的從第1個查詢返回的總是先列出像這樣:

搜索SKU
替代顏色
搜索SKU
替代顏色 替代顏色
搜索SKU
替代顏色

回答

2

它可以像這樣

SELECT 
pr.SKU, 
pr.pkSKU, 
pr.ColorDescription, 
pr.CommonBrandName, 
pr.BaseModel 
FROM tbl_products pr 
    INNER JOIN tbl_products pr1 ON pr.BaseModel = pr1.BaseModel 
WHERE pr2.pkSKU = 160386 
ORDER BY 
    CASE WHEN pr.pkSKU = 160386 THEN 0 ELSE 1 END, 
    pr.CommonBrandName, pr.SKU, pr.StandardColor 
+0

修改你的答案像這樣,以應付2分或更多的結果: '選擇 pr.SKU, pr.pkSKU, pr.ColorDescription, pr.CommonBrandName, pr.BaseModel FROM tbl_products PR INNER JOIN tbl_products PR1 ON pr.BaseModel = pr1.BaseModel WHERE pr2.pkSKU =((pr.pkSKU = 160386)OR(pr.pkSKU = 125912)) ORDER BY CASE WHEN PR .pkSKU =((pr.pkSKU = 160386)或(pr.pkSKU = 125912))然後0其他1 END, pr.CommonBrandName,pr.BaseModel,pr.SKU,pr.StandardColor' 是完美的,謝謝 –

相關問題