根据客户代码获得产品价格

时间:2013-09-04 10:38:44

标签: php mysql

我的产品表格如

ID     Type          Product Code     Product Name     Price
1      all customers 56620000         Product A        219.68 €
2      all customers 56621000         Product B        4,351.91 €
3      all customers 56622000         Product C        110.98 €
4      155000        56622000         Product C        100.00 €
5      all customers 56626000         Product D        2,410.38 €
6      all customers 56772000         Product E        100.00 €
7      160000        56772000         Product E        90.00 €

如果您注意到第3,4和6,7行具有相同的产品代码,但具有不同的类型和价格。这意味着产品可以为所有客户以及少数特定客户定价。如果客户ID为155000的客户使用产品代码56622000执行搜索,则该客户将获得价格100.00€(参见第4行)而不是110.98€(参见第3行)。但如果同一客户使用产品代码56772000执行搜索,他/她将获得价格100.00€(参见第6行)而不是90.00€(参见第7行)。因为产品代码56772000没有该用户的具体价格。

我的查询:如何使用单个表中的PHP和MySql执行此操作。?

3 个答案:

答案 0 :(得分:2)

SELECT  *
FROM    product
WHERE   ProductCode = 'x' AND
        Type IN ('y', 'All Customers')
ORDER   BY FIELD(Type, 'y', 'All Customers')
LIMIT   1

xy替换为演示中显示的所需值。

答案 1 :(得分:0)

SELECT * 
FROM Products 
WHERE ProductCode = 'product_id' AND Type IN ('customer_id', 'All Customers') 
ORDER BY Type 
LIMIT 1

答案 2 :(得分:0)

SELECT * FROM 
   (SELECT * FROM product
      WHERE `Type` = '155000' and ProductCode = '56622000'
      LIMIT 1
    UNION
    SELECT * FROM product
      WHERE `Type` = 'all customers' and ProductCode = '56622000'
      LIMIT 1) a
LIMIT 1;

感谢@ 491243提供小提琴代码。