求一句SQL

jrl5365 2009-04-06 01:47:09
表LoginIP表 包含 loginid,comid,loginip,logindt
表company表 包含 comid,comname

现在想用视图loginip和表company关联,问题不在

要求实现:
公司名称(comname) IP(loginip) 次数(logincount) 最后时间(logindt)
测试公司 A 60.192.168.1 10 2009-03-31 10:11:19
测试公司 B 60.192.168.1 5 2009-03-31 10:11:19

请问能不能用sql实现!
...全文
93 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
njmxs 2009-04-06
  • 打赏
  • 举报
回复
[Quote=引用楼主 jrl5365 的帖子:]
表LoginIP表 包含 loginid,comid,loginip,logindt
表company表 包含 comid,comname

现在想用视图loginip和表company关联,问题不在

要求实现:
公司名称(comname) IP(loginip) 次数(logincount) 最后时间(logindt)
测试公司 A            60.192.168.1    10        2009-03-31 10:11:19
测试公司 B            60.192.168.1    5      2009-03-31 10:11:19

请问能不能用sql实现!
[/Quote]

select company.comname ,a.loginip,a.logincount,a.logindt from company join (select comid,loginip,count(loginip) as logincount,max(logindt) as logindt from LoginIP group by comid,loginip) a on company.comid=a.comid
麻子Mozart 2009-04-06
  • 打赏
  • 举报
回复
SELECT A.comname ,B.loginip,B.logincount,B.logindt FROM company A,
(SELECT loginip,comid,MAX(logindt) AS logindt,COUNT(*) AS logincount
FROM LoginIP GROUP BY loginip,comid ) B
WHERE A.comid = B.comid
yygyogfny 2009-04-06
  • 打赏
  • 举报
回复
自己搞了点测试数据,不知道是不是这个意思.
yygyogfny 2009-04-06
  • 打赏
  • 举报
回复


create table LoginIP
(loginid int,comid int,loginip nvarchar(30),logindt datetime)

create table company
(comid int,comname nvarchar(50))

insert into LoginIP
select 1,1,'60.192.168.1','2009-03-31 10:11:19'
union all
select 2,1,'60.192.168.1','2009-03-30 10:11:19'
union all
select 3,2,'60.192.168.1','2009-01-1 10:11:19'
union all
select 4,2,'60.192.168.1','2009-01-2 10:11:19'

insert into company
select 1,'测试公司 A '
union all
select 2,'测试公司 B'

select comname,b.loginip,b.次数,b.最后时间 from company a
inner join
(
select loginip,comid,count(1)as 次数,max(logindt) as 最后时间
from LoginIP
group by comid,loginip
) b on a.comid = b.comid


comname loginip 次数 最后时间
-------------------------------------------------- ------------------------------ ----------- -----------------------
测试公司 A 60.192.168.1 2 2009-03-31 10:11:19.000
测试公司 B 60.192.168.1 2 2009-01-02 10:11:19.000

(2 row(s) affected)


zzxap 2009-04-06
  • 打赏
  • 举报
回复
[code=SQL]

create view v1
as


select b.comname as 公司名称 ,a.loginip,count(a.loginip) as 次数,max(logindt ) as 最后时间 from LoginIP a left join company on a.comid=b.comid group by b.comname,a.loginip
go

[/CODE]
jrl5365 2009-04-06
  • 打赏
  • 举报
回复
181199 浙江黄岩东海工艺品有限公司 60.182.95.159 2009-03-31 10:11:19

181198 浙江黄岩东海工艺品有限公司 60.182.95.159 2009-03-31 10:11:15

181197 台州中力缝纫机有限公司 218.106.2.17 2009-03-31 10:08:49

181196 浙江省台州市新兴塑料包装有限公司 123.97.154.19 2009-03-31 10:08:25

181195 浙江吉利汽车研究院有限公司 122.226.128.2 2009-03-31 10:08:07

181194 浙江黄岩广汇工贸有限公司 125.126.185.203 2009-03-31 10:07:52

181193 台州健民塑料厂 125.126.172.3 2009-03-31 10:06:19

181192 浙江以人电动车有限公司 125.126.235.220 2009-03-31 10:05:28

181191 浙江以人电动车有限公司 125.126.235.220 2009-03-31 10:05:20

181190 中国商业网台州分公司 125.127.120.126 2009-03-31 10:03:46

181189 中国商业网台州分公司 125.127.120.126 2009-03-31 10:03:37

181188 浙江炫霖投资发展有限公司 125.127.138.89 2009-03-31 10:03:10

181187 领驭健身俱乐部 218.75.11.66 2009-03-31 10:03:03

ws_hgo 2009-04-06
  • 打赏
  • 举报
回复
[Quote=引用楼主 jrl5365 的帖子:]
表LoginIP表 包含 loginid,comid,loginip,logindt
表company表 包含 comid,comname

现在想用视图loginip和表company关联,问题不在

要求实现:
公司名称(comname) IP(loginip) 次数(logincount) 最后时间(logindt)
测试公司 A 60.192.168.1 10 2009-03-31 10:11:19
测试公司 B 60.192.168.1 5 2009-03-31 10:11:19

请问能不能用sql实现!
兄弟是否弄够提供测试数据
[/Quote]
select C.comname,L.IP,count(loginip),(select L.logindt from LoginIP L where logindt in (select max(logindt) from loginip=L.loginip)) from LoginIP L join company C
on L.comid=C.comid

yygyogfny 2009-04-06
  • 打赏
  • 举报
回复
给点数据!

110,532

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧