我有一个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>
非常感谢,
克里斯
答案 0 :(得分:1)
使用外部联接而不是内部联接
答案 1 :(得分:1)
使用LEFT 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
Here's a good explanation不同类型的联接。