Sql 导致不包含值的查询

Sql 导致不包含值的查询,sql,oracle,Sql,Oracle,在下面的文章中,我将在我公司的遗留数据库中查找一个值 SELECT DISTINCT DLR.CIRCUIT_DESIGN_ID AS "CID", DLR.ECCKT AS "CIRCUIT", CI.LOCATION_ID_2 AS "SITE ID", CI.EXCHANGE_CARRIER_CIRCUIT_ID AS "ID", CI.RATE_CODE as

在下面的文章中,我将在我公司的遗留数据库中查找一个值

SELECT DISTINCT DLR.CIRCUIT_DESIGN_ID AS "CID",
                DLR.ECCKT AS "CIRCUIT",
                CI.LOCATION_ID_2 AS "SITE ID",
                CI.EXCHANGE_CARRIER_CIRCUIT_ID AS "ID",
                CI.RATE_CODE as "Rate",
                DLR.ACCESS_CUSTOMER_NAME AS "CUSTOMER SITE NAME",
                ADR.HOUSE_NBR || ' ' || ADR.STREET_NM || ' ' || ADR.STREET_SUF || ' ' || ADR.CITY_NAME || ' ' || ADR.STATE_CODE || ' ' || ADR.ZIP_CODE AS "CUSTOMER ADDRESS"
       FROM DESIGN_LAYOUT_REPORT DLR, CIRCUIT CI, MSAG_ADDR_LOC ADR
       WHERE CI.CIRCUIT_DESIGN_ID = DLR.CIRCUIT_DESIGN_ID 
             AND CI.LOCATION_ID_2 = ADR.LOCATION_ID
             AND CI.CIRCUIT_DESIGN_ID IN (
                 SELECT DISTINCT CIRCUIT_DESIGN_ID
                        FROM DLR_CIRCUIT_DESIGN_LINE
                        WHERE LOCATION LIKE '%  <some value from other code>   %'
                 )

我的问题来自这样一个事实,ADR只有我搜索的一些值的信息,这导致这个查询没有包括我需要的所有值。DLR和CI始终具有值。如何使此查询返回所有内容,并为与ADR条目不匹配的值提供空白返回?

您只需要外部联接:

SELECT DISTINCT DLR.CIRCUIT_DESIGN_ID AS "CID",
DLR.ECCKT AS "CIRCUIT",
CI.LOCATION_ID_2 AS "SITE ID",
CI.EXCHANGE_CARRIER_CIRCUIT_ID AS "ID",
CI.RATE_CODE as "Rate",
DLR.ACCESS_CUSTOMER_NAME AS "CUSTOMER SITE NAME",
ADR.HOUSE_NBR || ' ' || ADR.STREET_NM || ' ' || ADR.STREET_SUF || ' ' || ADR.CITY_NAME || ' ' || ADR.STATE_CODE || ' ' || ADR.ZIP_CODE AS "CUSTOMER ADDRESS"
FROM DESIGN_LAYOUT_REPORT DLR, CIRCUIT CI, MSAG_ADDR_LOC ADR
WHERE CI.CIRCUIT_DESIGN_ID = DLR.CIRCUIT_DESIGN_ID 
  AND CI.LOCATION_ID_2 = ADR.LOCATION_ID (+)
  AND CI.CIRCUIT_DESIGN_ID IN (
    SELECT DISTINCT CIRCUIT_DESIGN_ID
    FROM DLR_CIRCUIT_DESIGN_LINE
    WHERE LOCATION LIKE '%  <some value from other code>   %')

注意额外的+。这是旧式连接,您现在应该改用ANSI连接。

info了解一些信息?缺失数据的空字符串或sql空值?如果它为null,那么您必须使用合并类型操作将这些null转换为非null。谢谢,这是预期的效果。数据库工作是刚刚抛给我的东西,所以不幸的是,我必须为一个很可能是n00b的问题道歉,但感谢您这么快的回答。