给定客户端SQL的所有类型
好的,我有一个这样的数据库设置:给定客户端SQL的所有类型,sql,database,oracle,Sql,Database,Oracle,好的,我有一个这样的数据库设置: Client {Clientt#, FirstName, LastName, Email, city}; RType {TName, Price, TRooms}; Location {Confirm#, Arrival, Departure, Origin, Client# (references Guest), Type (references RoomType)} 我几乎需要创建SQL语句,该语句为我提供所有类型的客户机的列表 我写了这封信,但不起作用
Client {Clientt#, FirstName, LastName, Email, city};
RType {TName, Price, TRooms};
Location {Confirm#, Arrival, Departure, Origin, Client# (references Guest), Type (references RoomType)}
我几乎需要创建SQL语句,该语句为我提供所有类型的客户机的列表
我写了这封信,但不起作用:
SELECT Client#, FirstName, LastName, Type
FROM Client, Location
WHERE Client.Client# = Location.Client# and Location.Type = (select count(DISTINCT TName) from RType);
有人能帮我吗?用这个:
SELECT Client#, FirstName, LastName, Type
FROM Client, Location
WHERE Client.Client# = Location.Client# and
Location.Type IN (select DISTINCT TName from RType)
我会使用
having
子句来实现这一点。问题是:哪些客户端具有与RType表中相同数量的位置?这假定所有Location.type都在此表中
SELECT Client#
FROM Location l
group by Client#
having count(distinct l.type) = (select count(DISTINCT TName) from RType)
如果您真的需要,您可以加入客户端的附加信息。COUNT函数将返回您在其中有多少类型的计数,因此除非Location.Type=4,否则这将不起作用。删除计数或按如下方式加入表:
SELECT t1.Client#, t1.FirstName, t1.LastName, t2.Type
FROM Client t1
INNER JOIN Location t2
ON t1.Client# = t2.Client#