0

我有一个选择查询,它从我的库存表中选择所有产品并将它们与另外两个表(表 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_price 更高)的二手产品,例如在上面的示例中,您可以看到 001-used 的 a_price 高于 001 -新的。

我怎样才能实现这一点而不必解决使用 php

4

1 回答 1

0

FULL JOIN此查询与它自己在一个列上,该列对每个 id 前缀具有唯一相同的值。

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

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

于 2012-12-06T03:14:54.960 回答