比较来自同一选择查询的两个值

时间:2012-12-06 02:57:44

标签: mysql sql

我有一个选择查询,它从我的库存表中选择所有产品,并将它们与另外两个表(表l_products和a_products)连接起来

SELECT 
i.*, 
b.title, 
ROUND((i.price/100*80) - l.price,2)      AS margin, 
l.price                                  AS l_price, 
a.price                                  AS a_price, 
ROUND((a.price/100*80) - l.price, 2)     AS l_margin 

FROM inventory i 
LEFT JOIN products    b ON i.id  = b.id 
LEFT JOIN a_products  a ON i.id  = a.id 
LEFT JOIN l_products  l ON i.id  = l.id 

WHERE 
a.condition LIKE IF(i.condition = 'New', 'New%', 'Used%') 
AND l.condition LIKE IF(i.condition = 'New', 'New%', 'Used%') 

这个选择查询通常会给我一个表格,如...

id,        title, condition, margin, l_price, a_price ...
001-new    ...    new        10      20       10       
001-used   ...    used       10      25       20
002....

现在我在查询中需要一个条件,它会忽略所有使用过的产品(比a new价格更高的a_price),比如上面的例子你可以看到001-used有更高的价格a_price比001-new。

如何在不必解析使用php

的情况下实现这一目标

1 个答案:

答案 0 :(得分:0)

FULL JOIN此查询带有一个列,该列对每个id前缀具有唯一相同的值。

您可以通过在SELECT调用中添加另一个字段来实现此效果,该字段为001-new和001-used,002-new和002-used提供相同的唯一值...

这样的值生成可以通过定义自己的SQL例程来从列中提取前3个字符来完成。