在查询列中捕获空单元格行

时间:2013-11-11 16:17:38

标签: sql ms-access-2010

首先,我为这个令人困惑的标题道歉,我不知道该怎么说。

我正在Access 2010上进行查询,从2个表中获取数据,一个包含设备的正常数据,另一个包含图像(OLE对象)。 Marca_(品牌)和Modelo(模型)是我用来将设备与相应图像相关联的字段。

恢复表格是这样的:

设备一:

ID   Name      Marca_   Modelo  

1        Equip1   Brand1    Model1
2        Equip2   Brand2    Model2
3        Equip1   Brand3    Model3
4        Equip2   Brand4    Model4

图片一:

Image    Marca_   Modelo  

Image1   Brand1    Model1
Image2   Brand3    Model3

SELECT  [Tabela Equipamentos ULSM Geral].*, 
        [Fotografias e Manuais de Equipamentos2].FOTO
FROM [Tabela Equipamentos ULSM Geral] 
INNER JOIN [Fotografias e Manuais de Equipamentos2] 
    ON ([Tabela Equipamentos ULSM Geral].MODELO = [Fotografias e Manuais de Equipamentos2].MODELO) 
    AND ([Tabela Equipamentos ULSM Geral].Marca_ = [Fotografias e Manuais de Equipamentos2].MARCA);

我得到的是这样的:

ID   Name      Marca_   Modelo  Image

1        Equip1   Brand1    Model1  Image1
2        Equip3   Brand3    Model3  Image3

问题是某些设备的图片没有,而且该查询只给我带有相关图像的设备。

所以我的问题是,如何在图像表中获取没有任何连接的设备行? 这就是我想要的:

ID   Name      Marca_   Modelo   Image

1        Equip1   Brand1    Model1   Image1
2        Equip2   Brand2    Model2
3        Equip1   Brand3    Model3   Image3
4        Equip2   Brand4    Model4

1 个答案:

答案 0 :(得分:3)

使用LEFT JOIN代替INNER JOIN。另一方面,您应该始终使用表格的架构。我还建议您在查询中使用表别名。哦,最后,尝试在SELECT上明确添加您的列,而不是使用*

SELECT  T.ID, 
        T.Name,
        T.[Marca_],
        T.Modelo,
        F.[Image]
FROM dbo.[Tabela Equipamentos ULSM Geral] T -- use the right schema
LEFT JOIN dbo.[Fotografias e Manuais de Equipamentos2] F
    ON T.MODELO = F.MODELO
    AND T.Marca_ = F.MARCA;