首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >基于主表内容的条件内连接

基于主表内容的条件内连接
EN

Stack Overflow用户
提问于 2012-04-03 20:51:37
回答 2查看 798关注 0票数 1

我正在尝试运行一个程序来检查凭证表中的凭单是否有效。

有一些简单的验证方面,比如代金券是否已经过期,但也有一些代金券可能是有条件的,根据客户按品牌或供应商购买特定产品。

所以,我有一张优惠券

代码语言:javascript
复制
    id    |     brand     |     supplier    |    value    etc

品牌表

代码语言:javascript
复制
   id     |      name       etc

和一个供应商表

代码语言:javascript
复制
   id     |     name     etc

如果代金券不是特定于品牌或供应商的,则代金券故事中的值为0

我已经尝试了这个Sql查询内部连接表,但我没有得到任何结果,我假设这是因为我试图使用的代金券代码(id)不是特定于品牌或供应商?

代码语言:javascript
复制
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数据库:-)

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2012-04-03 20:59:08

为什么不像下面这样做一个LEFT JOIN

代码语言:javascript
复制
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
EN

Stack Overflow用户

发布于 2012-04-03 21:06:26

假设您只想返回有效的代金券,请尝试:

代码语言:javascript
复制
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)
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/9993650

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档