我正在尝试运行一个程序来检查凭证表中的凭证是否有效。
有一些简单的验证方面,例如凭证是否已经过了有效期,但是,有些凭证可能是基于客户按品牌或供应商购买特定产品的条件。
所以,我有一张凭证表

    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

10-04 17:06