我正在尝试运行一个程序来检查凭证表中的凭单是否有效。
有一些简单的验证方面,比如代金券是否已经过期,但也有一些代金券可能是有条件的,根据客户按品牌或供应商购买特定产品。
所以,我有一张优惠券
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的联接是以表vouchers中的值brand大于0为条件的(然后对于供应商也是如此)
我在这里看了一下,也看到了其他几个问题,但我恐怕不能完全理解e的答案,无法将它们与我的情况联系起来。
顺便说一下使用MySQL数据库:-)
发布于 2012-04-03 20:59:08
为什么不像下面这样做一个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
发布于 2012-04-03 21:06:26
假设您只想返回有效的代金券,请尝试:
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)https://stackoverflow.com/questions/9993650
复制相似问题