delphi 按次数统计查询

来源:百度知道 编辑:UC知道 时间:2024/05/16 17:34:31
求助!
一个酒店管理系统大作业的一分……
想要实现查询中筛选出在酒店住宿超过5次的客人
现有的数据库的表为入住表和客户信息表
客户表和入住表都没有计算单一用户入住次数的计数项
估计只能通过查找入住表中同一个用户ID出现过5次以上来实现
可是……怎么实现捏……
谢绝复制粘贴一族……
AdoQuery1.Close;
AdoQuery1.SQL.Clear;
AdoQuery1.SQL.Add('select client.ID as 客户身份证号,client.name as 客户姓名,client.telephone as 客户联系电话,client.Vip as 是否为VIP用户 from client inner join RuZhu on client.ID=RuZhu.ClientID ');
AdoQuery1.SQL.Add('group by RuZhu.ClientID having count(RuZhu.ClientID)>5');
AdoQuery1.Open;

重要代码在这里,运行时提示 client既不存在于聚合函数又不存在于groupby中云云……
按2L3L的做法做得,不知道为什么错,期待高手解答!!

select a.*
from 客户表 a inner join 入住表 b
on a.客户ID=b.客户ID
group by b.客户ID
having count(b.客户ID)>5

大概就是这么个意思,你自己改改就行了

select * from (
select a.客户ID,a.客户名,
(select count(*) from 入住表 b
where b.客户ID = a.客户ID) as 入住次数
from 客户表 a)
where 入住次数 > 5

语法就是这样,你可以参考我的SQL语句在你的数据库中执行一下,试试结果正不正确。

通过查询姓名和身份证,取返回的结果的记录条数,如果大于等于5次,那么就把它拎出来.这个记录条数是查询使用的对象的一个成员,直接用.操作就可以获取