我正在尝试运行一个程序来检查凭证表中的凭证是否有效。
有一些简单的验证方面,例如凭证是否已经过了有效期,但是,有些凭证可能是基于客户按品牌或供应商购买特定产品的条件。
所以,我有一张凭证表
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(然后对供应商类似)我看了一下这里,看到了其他几个问题,但恐怕我还不能完全理解这些问题的答案,无法将它们与我的情况联系起来。
使用MySQL数据库的方法:-)
最佳答案
为什么不这样做呢
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 & "'
这将返回所有的
LEFT JOIN
,无论它们是vouchers
还是brands