我的产品表格如
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执行此操作。?
答案 0 :(得分:2)
SELECT *
FROM product
WHERE ProductCode = 'x' AND
Type IN ('y', 'All Customers')
ORDER BY FIELD(Type, 'y', 'All Customers')
LIMIT 1
将x
和y
替换为演示中显示的所需值。
答案 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提供小提琴代码。