0

我有一个从四个表中提取数据的 SQL 查询,但如果第三个表 (SC_FeatureCart) 中没有数据,则查询不返回任何数据。

我知道包含 NULL 的列在创建连接时不匹配任何值,因此它们被排除在结果集中,但我仍然希望能够从前两个表 SC_NumberCart 和 SC_Packages 返回值所以任何人都可以帮助建议如何我能做到这一点???

我的 SQL 查询是:

SELECT SC_NumberCart.Number, SC_Packages.PkgName, SC_Features.FeatureName  
FROM SC_NumberCart 
JOIN SC_Packages ON SC_NumberCart.PkgID = SC_Packages.PkgID 
JOIN SC_FeatureCart ON SC_NumberCart.NumberID = SC_FeatureCart.NumberID 
AND SC_NumberCart.RecordID = SC_FeatureCart.RecordID 
JOIN SC_Features 
ON SC_FeatureCart.FeatureID = SC_Features.FeatureID 
WHERE SC_NumberCart.CpyID = @CpyID

如果 SC_FeatureCart 表中有数据,我可以使用此 SQL 查询查看并显示结果,如下图所示。

<table id="t2">
      <tr>
        <th>Number</th>
        <th>PkgName</th>
        <th>FeatureName</th>
      </tr>
      <tr>
        <td>01157710125</td>
        <td>01 / 02 Medium (Landline)</td>
        <td>Call Whisper</td>
      </tr>
    </table>

非常感谢,

克里斯

4

2 回答 2

1

使用外连接而不是内连接

于 2013-09-24T15:42:13.700 回答
1

使用 aLEFT JOIN表示您想要左表的结果,即使右表中没有匹配项。

SELECT SC_NumberCart.Number, SC_Packages.PkgName, SC_Features.FeatureName  
FROM SC_NumberCart 
LEFT JOIN SC_Packages ON SC_NumberCart.PkgID = SC_Packages.PkgID 
LEFT JOIN SC_FeatureCart ON SC_NumberCart.NumberID = SC_FeatureCart.NumberID 
                            AND SC_NumberCart.RecordID = SC_FeatureCart.RecordID 
LEFT JOIN SC_Features ON SC_FeatureCart.FeatureID = SC_Features.FeatureID 
WHERE SC_NumberCart.CpyID = @CpyID

这是对不同类型连接的一个很好的解释

于 2013-09-24T15:42:24.530 回答