我需要编写一个SQL查询来列出我们产品的客户价格。我们有一个标准价格表customer_no = 0
和一个客户特定价格表customer_no = XXXX
。
我无法理解如何获取查询以返回产品的客户特定价格,如果他们已经获得此类产品,或者如果没有回退到标准价格。
获取标准价目表上的所有产品和价格
select prices.product_id, products.product_desc, prices.m2
from prices, products
where prices.product_id = products.product_id
and prices.customer_no = 0
order by prices.product_id asc
获取客户专门引用的所有产品和价格
select prices.product_id, products.product_desc, prices.m2
from prices, products
where prices.product_id = products.product_id
and prices.customer_no = $_SESSION['customer']
order by prices.product_id asc
如何执行第一个查询,但如果客户有自己的价格,那么用它替换它?这甚至可能吗?
提前致谢。
史蒂夫
编辑抱歉,错过了原帖中两个查询中的第三行。
答案 0 :(得分:2)
您必须两次加入prices
表,一次是列表价格,然后是报价。对后者使用LEFT JOIN
,因为有些产品没有报价。然后使用NVL
默认从报价到定价。
SELECT products.product_id, products.product_desc, NVL(p2.m2, p1.m2)
FROM products
JOIN prices p1 ON p1.product_id = products.product_id
LEFT JOIN prices p2 ON p2.product_id = products.product_id
AND p2.customer_no = $_SESSION['customer']
WHERE p1.customer_no = 0
答案 1 :(得分:0)
尝试:
select prices.product_id, products.product_desc, prices.m2
from prices, products
where prices.customer_no = nvl($_SESSION['customer'], 0)
order by prices.product_id asc