Mysql 我有两个选择,我希望结果表是这两个选择的并集
我的目标是访问我的数据库并获得两件事: 1-每个教室有多少台计算机: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
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
语法是值得的。您可以共享两个表的结构吗?