我正在尝试运行一个程序来检查优惠券在优惠券表中是否有效。
有一些简单的验证方面,例如优惠券是否已过期,但是,某些优惠券可能是基于客户按品牌或供应商购买特定产品的条件。
所以,我有优惠券表
id | brand | supplier | value etc
品牌表
id | name etc
和供应商表
id | name etc
如果凭证不是特定于品牌或供应商的,则凭证故事中的值为0
我已经尝试过这个Sql查询内部加入表格,但我没有得到任何结果,我假设这是因为我试图使用的凭证代码(id)不是特定于品牌或供应商?
SELECT *, brands.name as brandName, suppliers.name as supplierName
FROM `vouchers`
INNER JOIN brands on vouchers.brand = brands.id
INNER JOIN suppliers on vouchers.supplier = suppliers.id
WHERE vouchers.id= '" & voucherCode & "'
如何编写此代码,以便表brands
的加入取决于表brand
中的值vouchers
是否大于0(然后是供应商的类似值)< / p>
我已经看过这里并看到其他几个问题,但我恐怕不能完全理解能够将它们与我的情况联系起来的答案。
顺便使用MySQL数据库: - )
答案 0 :(得分:1)
为什么不这样做LEFT JOIN
而不是这样:
SELECT *, brands.name as brandName, suppliers.name as supplierName
FROM `vouchers`
LEFT JOIN brands on vouchers.brand = brands.id
LEFT JOIN suppliers on vouchers.supplier = suppliers.id
WHERE vouchers.id= '" & voucherCode & "'
如果vouchers
或brands
suppliers
的所有内容
答案 1 :(得分:0)
假设您只想退回有效的优惠券,请尝试:
SELECT *, brands.name as brandName, suppliers.name as supplierName
FROM `vouchers`
LEFT JOIN brands on vouchers.brand = brands.id
LEFT JOIN suppliers on vouchers.supplier = suppliers.id
WHERE vouchers.id= '" & voucherCode & "' and
vouchers.brand = coalesce(brands.id, 0) and
vouchers.supplier = coalesce(suppliers.id, 0)