我正在尝试让产品搜索在 MySQL 5.0.88 中正常工作。
基本设置:我有表 A 与产品
A.id
A.ean
A.styleNo
A.price
A.seller (ID e.g. 123, 456)
还有一张带有价目表的表 B
B.name
B.ean
B.alt_price
B.seller
卖家可以定义可选的价目表,这些价目表与进行搜索的用户相匹配。我的搜索或多或少看起来像这样:
SELECT A.styleNo, A.price, B.price
FROM arts A
LEFT JOIN pricelists B ON
B.seller = A.seller
AND B.ean = A.ean
AND B.alt_price != 0
WHERE...
// pricelists
AND ( B.name = "some_name" AND B.seller = "123" ) OR ( next applicable seller ) ...
因此,在 LEFT JOIN 之后,我将按名称和卖家包括价格表中的所有商品。
这可以正常工作,因为它同时选择了正常价格 (A) 和 alt_price (B),并且我可以在显示结果时检查现有的 alt_price 以向用户显示正确的价格。
但是,如果卖家没有为他的所有产品提供替代价格,我现在正在展示具有 A 价格的产品,而实际上我不想展示来自该卖家且没有价目表的产品完全进入(想想区域分类)。
因此,如果用户 X 有一个价目表“abc”而卖家 123 有 500 个产品,其中 200 个在价目表“abc”上,我只想显示 200 个产品,而不是 500 个和 200 个的正确价格。
我尝试在 LEFT JOIN 中使用B.alt_price != 0,但这无济于事,因为那里的所有物品都有价格。
问题
有没有办法在实际搜索中做到这一点,或者我是否必须在结果循环中做到这一点,我并不热衷于这样做。