我有2种型号:CASE与EXISTS SQLite中查询将返回错误的结果
- 产品 - 产品及其价格
- 信息一览 - 产品可以有0 ... n个不同的优惠
表结构:
Table [shop_product]
Fields: 10
[id]: integer NOT NULL
[name]: varchar(300) NOT NULL
[slug]: varchar(150) NOT NULL
[description]: text NOT NULL
[photo]: varchar(100) NOT NULL
[price]: decimal NOT NULL
[category_id]: integer NOT NULL
[upload_date]: datetime NOT NULL
[is_enabled]: bool NOT NULL
[info_template_id]: integer
Table [shop_productoffer]
Fields: 6
[id]: integer NOT NULL
[price]: decimal NOT NULL
[description]: text NOT NULL
[offer_attribute_id]: integer NOT NULL
[product_id]: integer NOT NULL
[default_offer]: bool NOT NULL
Foreign Keys:
[] ([product_id]) REFERENCES [shop_product]([id])
我想建立一个查询返回的产品和售前列表通过以下逻辑发送“default_price”字段: 如果一个产品有报价(S) - >显示最低的相关报价 否则从产品
这里显示的价格领域是什么,我得到了(SQLITE3查询):
SELECT
product.price,
CASE offer.price
WHEN EXISTS(SELECT * FROM shop_productoffer
WHERE shop_productoffer.product_id = product.id)
THEN (SELECT MIN(price) FROM shop_productoffer
WHERE shop_productoffer.product_id = product.id AND
shop_productoffer.default_offer = 1)
ELSE product.price
END AS 'default_price'
FROM shop_product as product
LEFT JOIN shop_productoffer AS offer ON product.id = offer.product_id
因为它看起来像,在Exists
条件永不满足 - 查询总是返回default_price”值product.price
。有些产品链接到优惠,其中一些不是,但结果总是相同的。
我做错了什么? 这是一个非常简单的查询,但我不能让它工作
请你分享你的表格结构,一些样本数据,以及你试图得到的结果? – Mureinik