Py学习  »  DATABASE

MySQL将两个独立的复杂查询中的列合并为一行

David Eno • 5 年前 • 1524 次点击  

我在一个网站上工作,那里有许多不同的服装系列。生产线是指具有相同设计、风格、制造商等的服装。在一条生产线中,服装有不同的尺寸和颜色。

要在一个特定的行中组合所有可用颜色的图表,下面的查询工作得很好(我在Coldfusion中工作,但是PHP将使用相同的查询)。

SELECT 
skuColourwayID,cHex,cLongName,skuID, cwColID1
from garment_sku
join garment_colourways
on cwID=skuColourwayID
join garment_colour_name
on cID=cwColID1
where skuLineID= <cfqueryPARAM value = "#url.lnID#" CFSQLType = "CF_SQL_INTEGER">
group by skuColourwayID

为了积累我需要的所有信息,我必须使用连接访问三个表。(对于如何将数据呈现给我,我没有任何选择)。该行由lnID标识,在上述情况下,lnID以url变量开头。从sku表(garment_sku)开始,我访问colorways表(garment_colorways)并获取colorway颜色id(cwColID1)。通过将此应用于颜色名称表(garmentúu colourúu name),我可以得到颜色的实际名称及其十六进制值。

这一切都很好,只有几件衣服是双色的(衣袖和衣领等颜色不同)。服装库存表中有第二列cwColID2,表示第二种颜色。

解决这个问题的一种方法是执行两个单独的查询,在第二个查询中,cwColID1被cwColID2替换。然后,我可以结合查询编程,以实现双色在需要的地方。但是,这看起来很不优雅,我敢肯定MySQL在一个查询中就可以处理这个问题了?

我不想说,但表中也有第三种颜色cwColID3的规定,尽管我从来没有遇到过任何三种颜色的服装,我很高兴只为这两种颜色解决这个问题。

谢谢你的帮助。

Python社区是高质量的Python/Django开发社区
本文地址:http://www.python88.com/topic/50171
 
1524 次点击  
文章 [ 1 ]  |  最新文章 5 年前