2016-04-25 124 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' 是完美的,谢谢 –

相关问题