隨筆心得

          記我所見,記我所想

          BlogJava 首頁 新隨筆 聯系 聚合 管理
            34 Posts :: 0 Stories :: 16 Comments :: 0 Trackbacks

          用數學里集合的思想去解決數據庫表的問題,可以幫助我們清晰的分析和解決問題。

          查詢不滿足工作要求的人

          ?

          人名 ?? 工作名 ? 不滿足條件 ? 人條件 ? 工作條件

          張三 ?? 搬運工 ??? 年齡 ????? 8???????? 青年

          李四 ?? 教師 ????? 愛好 ????? 體育 ????? 畫畫

          ?

          在表里隨便添點數據

          ?

          查詢 比如工作表里 搬運工 需要青年 ? 張三才 8 所以不符合條件

          ?

          工作表里要求 工作 愛好是畫畫的 ? 李四的愛好是 體育 所以也不符合條件 就是把 這種不符合條件的全都查出來

          ?



          關于多表查詢的一個題
          sql腳本如下
          生成表及關系的腳本:
          /*==============================================================*/
          /* DBMS name:????? Microsoft SQL Server 2000??????????????????? */
          /* Created on:???? 2007-7-11 12:48:23?????????????????????????? */
          /*==============================================================*/


          alter table WORKS
          ?? drop constraint FK_WORKS_REFERENCE_AGE
          go

          alter table WORKS
          ?? drop constraint FK_WORKS_REFERENCE_FAVERATE
          go

          alter table WORKS
          ?? drop constraint FK_WORKS_REFERENCE_ROLE
          go

          alter table rights
          ?? drop constraint FK_RIGHTS_REFERENCE_ROLE
          go

          alter table rights
          ?? drop constraint FK_RIGHTS_REFERENCE_USERS
          go

          alter table users
          ?? drop constraint FK_USERS_REFERENCE_FAVERATE
          go

          if exists (select 1
          ??????????? from? sysobjects
          ?????????? where? id = object_id('WORKS')
          ??????????? and?? type = 'U')
          ?? drop table WORKS
          go

          if exists (select 1
          ??????????? from? sysobjects
          ?????????? where? id = object_id('age')
          ??????????? and?? type = 'U')
          ?? drop table age
          go

          if exists (select 1
          ??????????? from? sysobjects
          ?????????? where? id = object_id('faverate')
          ??????????? and?? type = 'U')
          ?? drop table faverate
          go

          if exists (select 1
          ??????????? from? sysobjects
          ?????????? where? id = object_id('rights')
          ??????????? and?? type = 'U')
          ?? drop table rights
          go

          if exists (select 1
          ??????????? from? sysobjects
          ?????????? where? id = object_id('role')
          ??????????? and?? type = 'U')
          ?? drop table role
          go

          if exists (select 1
          ??????????? from? sysobjects
          ?????????? where? id = object_id('users')
          ??????????? and?? type = 'U')
          ?? drop table users
          go

          /*==============================================================*/
          /* Table: WORKS???????????????????????????????????????????????? */
          /*==============================================================*/
          create table WORKS (
          ?? id?????????????????? int????????????????? not null,
          ?? name???????????????? char(1)????????????? null,
          ?? age????????????????? int????????????????? null,
          ?? faverate???????????? int????????????????? null,
          ?? role???????????????? int????????????????? null,
          ?? constraint PK_WORKS primary key? (id)
          )
          go

          execute sp_addextendedproperty 'MS_Description',
          ?? '工作表',
          ?? 'user', '', 'table', 'WORKS'
          go

          /*==============================================================*/
          /* Table: age?????????????????????????????????????????????????? */
          /*==============================================================*/
          create table age (
          ?? id?????????????????? int????????????????? not null,
          ?? type???????????????? char(1)????????????? null,
          ?? span???????????????? int????????????????? null,
          ?? constraint PK_AGE primary key? (id)
          )
          go

          execute sp_addextendedproperty 'MS_Description',
          ?? '年齡表',
          ?? 'user', '', 'table', 'age'
          go

          /*==============================================================*/
          /* Table: faverate????????????????????????????????????????????? */
          /*==============================================================*/
          create table faverate (
          ?? id?????????????????? int????????????????? not null,
          ?? type???????????????? char(1)????????????? null,
          ?? description????????? char(1)????????????? null,
          ?? constraint PK_FAVERATE primary key? (id)
          )
          go

          execute sp_addextendedproperty 'MS_Description',
          ?? '愛好表',
          ?? 'user', '', 'table', 'faverate'
          go

          /*==============================================================*/
          /* Table: rights??????????????????????????????????????????????? */
          /*==============================================================*/
          create table rights (
          ?? id?????????????????? int????????????????? not null,
          ?? uid????????????????? int????????????????? null,
          ?? rid????????????????? int????????????????? null,
          ?? constraint PK_RIGHTS primary key? (id)
          )
          go

          execute sp_addextendedproperty 'MS_Description',
          ?? '權限表',
          ?? 'user', '', 'table', 'rights'
          go

          /*==============================================================*/
          /* Table: role????????????????????????????????????????????????? */
          /*==============================================================*/
          create table role (
          ?? id?????????????????? int????????????????? not null,
          ?? name???????????????? char(1)????????????? null,
          ?? constraint PK_ROLE primary key? (id)
          )
          go

          execute sp_addextendedproperty 'MS_Description',
          ?? '角色表',
          ?? 'user', '', 'table', 'role'
          go

          /*==============================================================*/
          /* Table: users???????????????????????????????????????????????? */
          /*==============================================================*/
          create table users (
          ?? id?????????????????? int????????????????? not null,
          ?? name???????????????? char(1)????????????? null,
          ?? age????????????????? int????????????????? null,
          ?? faverate???????????? int????????????????? null,
          ?? sex????????????????? char(1)????????????? null,
          ?? constraint PK_USERS primary key? (id)
          )
          go

          execute sp_addextendedproperty 'MS_Description',
          ?? '用戶表',
          ?? 'user', '', 'table', 'users'
          go

          alter table WORKS
          ?? add constraint FK_WORKS_REFERENCE_AGE foreign key (age)
          ????? references age (id)
          go

          alter table WORKS
          ?? add constraint FK_WORKS_REFERENCE_FAVERATE foreign key (faverate)
          ????? references faverate (id)
          go

          alter table WORKS
          ?? add constraint FK_WORKS_REFERENCE_ROLE foreign key (role)
          ????? references role (id)
          go

          alter table rights
          ?? add constraint FK_RIGHTS_REFERENCE_ROLE foreign key (rid)
          ????? references role (id)
          go

          alter table rights
          ?? add constraint FK_RIGHTS_REFERENCE_USERS foreign key (id)
          ????? references users (id)
          go

          alter table users
          ?? add constraint FK_USERS_REFERENCE_FAVERATE foreign key (faverate)
          ????? references faverate (id)
          go

          查詢腳本 :

          select * from AGE

          select * from FAVERATE
          select * from RIGHTS


          select * from ROLE

          select * from USERS
          select u.id as uid,u.name as uname,u.age as uage,u.faverate as ufaver,r.rid as rrid from USERS u,RIGHTS r where r.uid=uid

          ?

          select wid,age,faverate,role from WORKS

          select u.id as uid,u.age as uage,u.faverate as ufaver,r.rid as rrid from USERS u,RIGHTS r where r.uid=uid

          ?


          <--符合條件的工作-->
          select distinct w.wid,a.span as aspan,w.faverate as wfaver,v.uid,v.uage,v.ufaver from AGE a,WORKS w,

          ?(select u.id as uid,u.age as uage,u.faverate as ufaver,r.rid as rrid from USERS u,RIGHTS r

          ??where r.uid=uid) v

          where a.ageid=w.age and a.span=uage and w.faverate=v.ufaver

          ?


          <--不符合條件的工作-->
          select users.name 人名,works.name 工作名,v2.aspan 需求年齡,v2.uage 用戶年齡,v2.wfaver 需求愛好,v2.ufaver 用戶愛好 from users,works,

          (select distinct w.wid,a.span as aspan,w.faverate as wfaver,v.uid,v.uage,v.ufaver from AGE a,WORKS w,

          ?(select u.id as uid,u.age as uage,u.faverate as ufaver,r.rid as rrid from USERS u,RIGHTS r

          ??where r.uid=uid) v

          ??????? where a.ageid=w.age and (a.span!=uage or w.faverate!=v.ufaver )) v2

          where v2.wid=works.wid and v2.uid=users.id order by users.name

          ?

          ?
          posted on 2007-07-11 14:03 源自有緣 閱讀(358) 評論(0)  編輯  收藏

          只有注冊用戶登錄后才能發表評論。


          網站導航:
           
          主站蜘蛛池模板: 柞水县| 米易县| 嘉禾县| 南召县| 汉源县| 镇远县| 土默特右旗| 宝鸡市| 新密市| 饶阳县| 绥滨县| 思茅市| 朝阳市| 当阳市| 榆中县| 蒲城县| 昌江| 旬阳县| 定结县| 长寿区| 西林县| 成安县| 佛教| 神木县| 霍城县| 璧山县| 东丰县| 盐源县| 云龙县| 苍南县| 北辰区| 阳朔县| 台安县| 兴国县| 华阴市| 和田市| 大同县| 二连浩特市| 布拖县| 杭锦后旗| 娄底市|