如何在SQL中返回Null

时间:2017-11-28 22:19:26

标签: sql sql-server

<script src="https://threejs.org/build/three.min.js"></script>
<script src="https://threejs.org/examples/js/controls/OrbitControls.js"></script>

<canvas id="myCanvas"></canvas>

我正在运行它,但它没有返回任何东西。我知道有一个事实,那里有一个Item.xxxx,那里有信息,但是有一个ITEM_CC_PAT.xxxx它应该在那些列中返回Null。有谁知道我能做什么?

我尝试添加此功能,但它仍然没有返回任何内容。

select 
    ITEM.ITEM_ID, ITEM.ITEM_NO, ITEM_CC_PAT.CC_ID, 
    ITEM_CC_PAT.PAT_CHRG_NO, 
    ITEM_CC_PAT.PAT_CHRG_PRICE
from 
    ITEM, ITEM_CC_PAT
where 
    ITEM.ITEM_ID = ITEM_CC_PAT.ITEM_ID 
    and ITEM.ITEM_NO = '000642'

4 个答案:

答案 0 :(得分:2)

您需要左连接。使用现代联接实现...像这样:

select ITEM.ITEM_ID, ITEM.ITEM_NO, ITEM_CC_PAT.CC_ID, 
ITEM_CC_PAT.PAT_CHRG_NO, 
ITEM_CC_PAT.PAT_CHRG_PRICE
from ITEM
left join ITEM_CC_PAT on ITEM.ITEM_ID = ITEM_CC_PAT.ITEM_ID 
where ITEM.ITEM_NO = '000642'

答案 1 :(得分:0)

也许你正在寻找左外连接。

select ITEM.ITEM_ID, ITEM.ITEM_NO, ITEM_CC_PAT.CC_ID, 
ITEM_CC_PAT.PAT_CHRG_NO, 
ITEM_CC_PAT.PAT_CHRG_PRICE
from ITEM
left outer join ITEM_CC_PAT on ITEM.ITEM_ID = ITEM_CC_PAT.ITEM_ID 
where ITEM.ITEM_NO = '000642'

答案 2 :(得分:0)

你需要的是一个JOIN子句,有很多类型INNER JOIN,NATURAL JOIN,LEFT,RIGHT ...左表如果你声明的第一个表,右表是第二个。左连接意味着将对第二个表测试左表中的所有记录。然后,当没有匹配时,它将显示匹配和NULL。

内部联接将比较两个表,并仅在匹配时显示结果。

自然连接比较两个表中出现的具有相同名称的所有列。

这是您在数据库中使用主键和外键的方式。

查询应如下所示:

SELECT i.ITEM_ID, i.ITEM_NO, p.CC_ID, p.PAT_CHRG_NO, p.PAT_CHRG_PRICE
FROM ITEM i INNER JOIN ITEM_CC_PAT p
ON i.ITEM_ID = p.ITEM_ID 
AND i.ITEM_NO = '000642';

此外,您应该使用别名来使代码更短,更易读,而且它是正确的方法。请注意如何创建和使用别名。 &#34; ITEMS i或ITEM_CC_PAT p&#34;在这种情况下。 然后你可以通过使用i或p作为前缀来引用表格E.g: i.ITEM_ID,i.ITEM_NO,p.CC_ID等

答案 3 :(得分:0)

我和其他人一样,你需要按如下方式指定JOIN的类型:

SELECT
     ITEM.ITEM_ID
    ,ITEM.ITEM_NO
    ,ITEM_CC_PAT.CC_ID
    ,ITEM_CC_PAT.PAT_CHRG_NO
    ,ITEM_CC_PAT.PAT_CHRG_PRICE
FROM ITEM
LEFT OUTER JOIN ITEM_CC_PAT
   ON ITEM.ITEM_ID = ITEM_CC_PAT.ITEM_ID 
WHERE ITEM.ITEM_NO = '000642'

这将为您提供ITEM表中的所有记录,同时允许ITEM_CC_PAT表中的匹配或不匹配(NULL)。