Mysql 我有两个选择,我希望结果表是这两个选择的并集

Mysql 我有两个选择,我希望结果表是这两个选择的并集,mysql,database,Mysql,Database,我的目标是访问我的数据库并获得两件事: 1-每个教室有多少台计算机: select room.idRoom, count(*) as 'Existing Computers' from room, computer where room.idRoom = computer.idRoom group by room.idRoom 第二-使用了多少台计算机: select room.idRoom, count(*) as 'Computers U

我的目标是访问我的数据库并获得两件事:

1-每个教室有多少台计算机:

select 
    room.idRoom, count(*) as 'Existing Computers'
from
    room,
    computer
where
    room.idRoom = computer.idRoom
group by room.idRoom
第二-使用了多少台计算机:

select 
    room.idRoom,
    count(*) as 'Computers Used'
from
    room,
    session,
    computer
where
    room.idRoom = computer.idRoom
        and computer.idComputer = session.idComputer
        and session.logout is null
group by room.idRoom
虽然这两个查询可以单独工作,但我希望我的结果表只显示
'现有计算机'
数量等于
'使用的计算机'
数量的房间。主要目的是要有一个房间完全满的清单。最好以这种方式:

idRoom | Existing Computers | Computers Used 
B100   |      4             |        4
B101   |      10            |        10
我很抱歉没有使用正确的格式来回答这个问题,但我是stackoverflow的新手,我几乎没有时间来解决这个问题,因为我的项目将于本周日到期。 提前感谢您的帮助:)

所以加入他们:

Select t1.idRoom, t1.ExistingComputers, t2.UsedComputers
    (select 
        room.idRoom, count(*) as ExistingComputers
    from  
        room,
        computer  
    where
        room.idRoom = computer.idRoom
    group by room.idRoom) t1
inner join 
    (select 
        room.idRoom,
        count(*) as UsedComputers
    from
        room,
        session,
        computer
    where
        room.idRoom = computer.idRoom
            and computer.idComputer = session.idComputer
            and session.logout is null
    group by room.idRoom) t2 on t1.idRoom = t2.idRoom
我保留了你的伪代码。其基本思想是,为要选择的第一个表提供一个别名,为要选择的第二个表提供一个别名,然后在idRoom上加入它们。

试试这个

Select ext.idRoom,
    ExistingComputers as 'Existing Computers',
    ComputersUsed as 'Computers Used'
from
    (select 
        room.idRoom, count(*) as ExistingComputers
    from
        room,
        computer
    where
        room.idRoom = computer.idRoom
    group by room.idRoom) as ext
inner join
    (select 
        room.idRoom,
        count(*) as ComputersUsed
    from
        room,
        session,
        computer
    where
        room.idRoom = computer.idRoom
            and computer.idComputer = session.idComputer
            and session.logout is null
    group by room.idRoom) as usd
on ext.idRoom = usd.idRoom
and ext.ExistingComputers = usd.ComputersUsed

干杯

您可以在一个查询中完成此操作,而无需子查询

如果您将计算机加入注销为空的会话,那么您将只获得

SELECT r.idRoom, COUNT(*) AS 'Existing Computers In Use'
FROM room AS r
JOIN computer AS c ON r.idRoom=c.idRoom
JOIN session AS s ON c.idComputer=s.idComputer 
WHERE s.logout IS NULL
GROUP BY r.idRoom

使用SQL-92
JOIN
语法是值得的。

您可以共享两个表的结构吗?