【问题标题】:Sybase SQL Conditional JoinSybase SQL 条件连接
【发布时间】:2014-04-10 13:47:25
【问题描述】:

两个表 - SuppliersWork_Orders

我正在尝试返回 Work_Orders 表中 Supplier_ID 不为 0 的供应商。但尽我所能,它只会返回供应商表中有记录的记录......有什么想法吗?谢谢

SELECT
    Work_Orders.Order_ID as 'ID',
    Work_Orders.Log_Date as 'Date', 
    IF Work_Orders.Supplier_ID > 0 THEN
        Suppliers.Supplier_Name
    ELSE
       'Not Allocated'
    END IF AS 'Supplier', 
    Work_Orders.Add1 as 'Unit',
    Work_Orders.Work_Type as 'Type',
    Work_Orders.Status as Status_ID
FROM
    Work_Orders 
    JOIN Suppliers ON Suppliers.Supplier_ID = Work_Orders.Supplier_ID
WHERE
    Work_Orders.Supplier_ID > 0

万一其他人遇到这种情况

SELECT Work_Orders.Order_ID as 'ID', Work_Orders.Log_Date as 'Date', IsNull(Suppliers.Supplier_Name, 'Not Allocated') as 'Supplier', Work_Orders.Add1 as 'Unit', Work_Orders.Work_Type as 'Type', Work_Orders.Status as Status_ID FROM Work_Orders 
        LEFT OUTER JOIN Suppliers ON Suppliers.Supplier_ID = Work_Orders.Supplier_ID

【问题讨论】:

  • 将其更改为OUTER JOIN
  • Dai - 成功了(一旦我发现了 LEFT OUTER JOIN)。谢谢
  • 您可以将您的答案记录为实际答案,并接受它。
  • 但公平地说,这不是我的答案!

标签: sql sybase


【解决方案1】:

将您的查询更改为使用LEFT OUTER JOIN

INNER JOIN 的行仅在两个引用表中都匹配时才包含在输出中,OUTER JOIN 包含所有行,缺少的引用值将替换为 NULL

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-05-18
    • 2014-12-25
    • 2011-03-29
    • 2023-04-10
    • 2012-09-17
    • 2020-05-19
    相关资源
    最近更新 更多