我有一个选择查询,它从我的库存表中选择所有产品,并将它们与另外两个表(表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
的情况下实现这一目标答案 0 :(得分:0)
FULL JOIN
此查询带有一个列,该列对每个id前缀具有唯一相同的值。
您可以通过在SELECT
调用中添加另一个字段来实现此效果,该字段为001-new和001-used,002-new和002-used提供相同的唯一值...
这样的值生成可以通过定义自己的SQL例程来从列中提取前3个字符来完成。