sql - 加入在表 sql 查询中不起作用

标签 sql postgresql grails grails-orm

我有两张 table
购买账单

id   |customer_supplier |transaction_no
________________________________________
594  |99                | Y
636  |99                | Y

和purchase_bill_return
id   |customer_supplier |transaction_no  |p_id
______________________________________________
523  |99                | Y              |536
624  |99                | Y              |536

我希望通过以下方式输出表
id   |pr_id
___________
594  |
636  |523
636  |624

我正在使用 SQL 查询:
SELECT pb.ID, 
       pr.ID 
FROM   PURCHASE_BILL pb 
       LEFT JOIN PURCHASE_BILL_RETURN pr 
              ON pb.ID = pr.PURCHASE_BILL_ID 
                 AND pb.CUSTOMER_SUPPLIER_ID = pr.CUSTOMER_SUPPLIER_ID 
WHERE  pb.COMPANY_ID = 3 
       AND pr.COMPANY_ID = 3 
       AND pr.TRANSACTION_NO = 'Y' 
       AND pb.TRANSACTION_NO = 'Y' 
       AND pr.COSTOMER_SUPLIER_ID = 99; 

但它只返回两个值:
id   |pr_id
636  |523
636  |624

最佳答案

这是因为您将 where 子句中的过滤器应用于左连接外部的行。如果该行由于左连接而为空,则 WHERE pr.company_id = 3 将为假(pr.company_id 为空,而不是 3)。

将 pr 表上的所有条件移动到 LEFT JOIN 条件而不是 WHERE 子句中的条件(注意我实际上已经将 pr.company_id 加入到 pb.company_id 中,而不是将条件放在它们都是 3 中,只是确保 pb.company_id 是 3 并且 pr.company_id 匹配它):

select pb.id,pr.id
from purchase_bill pb left join purchase_bill_return pr on  pb.id=pr.purchase_bill_id
    and pb.customer_supplier_id=pr.customer_supplier_id and pr.company_id = pb.company_id
    and pr.transaction_no = pb.transaction_no and pr.costomer_suplier_id=99
where pb.company_id =3 and pb.transaction_no = 'Y'

关于sql - 加入在表 sql 查询中不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24722685/

相关文章:

grails - heroku 无法访问 jarfile server/webapp-runner.jar

MySQL 查询(分组依据)

MySQL - 使用 IN 子句从 LEFT JOIN 结果检查多个值

优先选择列值的 SQL 选择

mysql - 用于从多个大表中创建新表的 sql 语法

postgresql - 使用 PostgreSQL 全文搜索匹配简短但重要的字符串

ruby - 如何使用 Sequel gem 将 full_text_search 与 unaccent 结合起来?

sql - PostgreSQL 错误 : set-returning functions are not allowed in CASE

MySQLNonTransientConnectionException : Communications link failure during commit with mysql and mongodb in grails-2. 2.2

jquery - 从Grails自定义标签调用jQuery