给出下面表写出相应的SQL语句
用户表                                 自驾游信息表                          留言
用户id  char(32) pk                自驾游ID   char(32)  <pk>           留言ID  char(32)  pk
用户名称 varchar(100)               发布人ID   char(32)  <fk>            自驾游ID char(32) fk1
用户密码 varchar(100)               自驾游主题   TEXT                    用户ID    char(32)   fk2
                                   发布时间     datetime               留言内容   varchar(500)
                                                                     留言时间   datetime
报名
报名ID  char(32)  pk
用户ID   char(32)  fk1
自驾游ID  char(32) FK2
统计某个用户报名多少个自驾游?
列出某个用户在“南京一日游”这个自驾游上浏览内容和时间
列出报名“南京一日游”自驾游而没有在这个自驾游上浏览用户列表

解决方案 »

  1.   

    统计某个用户报名多少个自驾游?[做個參考]
    answer:select count(*) from 自驾游信息表 
    left join 报名 on 自驾游信息表.自驾游ID=报名.自驾游ID
    left join 用户表 on  报名.用户ID = 用户表.用户id
    where 用户表.用户id = 某个用户
      ---con"列出某个用户在“南京一日游”这个自驾游上浏览内容和时间 "可能你自己寫錯了吧,應該是留言的內容和時間吧
      

  2.   

    --统计某个用户报名多少个自驾游? 
    select count(*) from 报名 where 用户id='用户id'--是否查留言
    --列出某个用户在“南京一日游”这个自驾游上浏览内容和时间 
    select * from 留言 where 用户id='用户id' 
    and 自驾游id in (select 自驾游id from 自驾游信息表 where 自驾游主题='南京一日游')
    --列出报名“南京一日游”自驾游而没有在这个自驾游上浏览用户列表 select a.* from 用户表 a,报名 b,自驾游信息表 c
    where a.用户id=b.用户  and b.自驾游id=c.自驾游id and c.自驾游主题='南京一日游'
        and not exists(select * from 留言 where 自驾游id=b.自驾游id and 用户id=a.用户id)
      

  3.   

    大家看看我的答案是不是上面的题目的答案 。1:declare @@a int set @@a=(select 用户id from 用户表 where 用户名='张三')
    select count(自驾游id) from 报名 where 用户id=@@a
    2:declare @@a int set @@a=(select 用户id from 用户表 where 用户名='张三')
    declare @@b int set @@b=(select 自驾游id from 自驾游信息表 where 自驾游主题='南京一日游')
    select 留言内容,留言时间 from 留言 where 用户id=@@a and 自驾游id=@@b
    3:declare @@a int set @@a=(select 用户id from 用户表 where 用户名='张三')
    select * from 用户表 where 用户id in(select 用户id from 报名 where 自驾游id=@@a)
     and 用户表.用户id not in (select 用户ID  from 留言 where 留言.自驾游ID='南京一日游')
      如果是错误的话帮我修改一下
      

  4.   

    --统计张三用户报名多少个自驾游? 
    select count(*) from  报名 a  inner join 用户表  b on 用户id=用户id and b.用户名称='张三'--列出张三用户在“南京一日游”这个自驾游上浏览内容和时间 select a.自驾游主题,c.留言时间,c.留言内容 from 自驾游信息表 a 
    inner join 用户表 c on c.用户id=d.用户id 
    inner join 留言   d on d.自驾游id=a.自驾游id
    where 用户名称='张三' and a.自驾游主题='南京一日游'--列出报名“南京一日游”自驾游而设在这个自驾游上浏览用户列表 select 用户名 from 用户表 
    inner join 报名 on 用户表.用户id=报名.用户id
    inner join 自驾游信息表 on 自驾游信息表.自驾游ID=报名.自驾游ID
    where  用户名称 not exists (select * from  留言 inner join 报名  on 留言.用户id=报名.用户id and 留言.自驾游ID=报名.自驾游ID) 
    and    自驾游信息表.自驾游主题='南京一日游'