2012-12-06 52 views
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使用的a_price高於001-新。

我如何可以與具有解決使用PHP

回答

0

FULL JOIN這個查詢它自上它針對每個ID前綴的唯一相同值的列了實現這一目標。

您可以通過添加其他字段您SELECT調用,它爲001,新001使用的,002新和002使用的產生相同的獨特價值達到這個效果......

這樣的值生成可通過定義自己的SQL例程來從列中提取前3個字符來完成。

相關問題