查询MS-Access中的两个表?

时间:2012-07-25 09:27:13

标签: sql ms-access

有人可以帮助我,我必须比较两个表,我的经理希望看到Access数据库中两个表之间的比较。两个表都包含IP电话,其类型,MAC以及分配给它们的站点ID。我的经理想要的是以一种形式查看这些数据。我知道我可以用两个子表单来做到这一点,但如果我能用一个sql语句来做它会好得多,因为我知道它可以完成,但我只是愚蠢地去做。我需要的是三列,第1列=手机类型,第2列=表1计数,第3列=表2计数:

Handset Type |TABLE 1 COUNT| TABLE 2 COUNT|
CISCO7911    | 100         | 50
CISCO7942    | 100         | 50

我目前只通过查询一个表来使用这两个列,但是如何添加最后一列,我尝试了UNION但是这会将数据添加到额外的行而不是另一列。

SELECT tbl_handsets.handset_type,
    Count(IIf(handset_site_id='12345',1,Null)) AS myCompany_Number
FROM tbl_Handsets
GROUP BY tbl_handsets.handset_type

任何想法???

2 个答案:

答案 0 :(得分:1)

如果您告诉我们此查询会返回您想要的Handset TypeTABLE 1 COUNT ...

数据
SELECT
    handset_type,
    Count(IIf(handset_site_id='12345',1,Null)) AS myCompany_Number
FROM tbl_Handsets
GROUP BY handset_type

...并将tbl_Accenture替换为tbl_HandsetsFROM会返回您对Handset TypeTABLE 2 COUNT的所需内容,然后构建一个同时使用这两者的查询那些作为子查询并将它们中的两个连接在一起。

SELECT
    t1.handset_type,
    t1.myCompany_Number AS [TABLE 1 COUNT],
    t2.myCompany_Number AS [TABLE 2 COUNT]
FROM
    (
        SELECT
            handset_type,
            Count(IIf(handset_site_id='12345',1,Null))
                AS myCompany_Number
        FROM tbl_Handsets
        GROUP BY handset_type
    ) AS t1
    INNER JOIN
    (
        SELECT
            handset_type,
            Count(IIf(handset_site_id='12345',1,Null))
                AS myCompany_Number
        FROM tbl_Accenture
        GROUP BY handset_type
    ) AS t2
    ON t1.handset_type = t2.handset_type

答案 1 :(得分:0)

可能会有所帮助,但我会测试它。

如果您的表格中有一个代表gloves_type_id的列,则查询将更改为

SELECT tbl_handsets.handset_type,
    COUNT(*) AS Table1_Count,
    ( SELECT COUNT(*) FROM tbl_Accenture 
        WHERE tbl_Accenture.handset_type = tbl_handsets.handset_type
        AND  tbl_Accenture.handset_site_id  = '15017' ) 
    AS Table2_Count  
FROM tbl_Handsets
Where tbl_handsets.handset_site_id = '15017'
GROUP BY tbl_handsets.handset_type